2016-06-23 31 views
0
String key="this is stack Overflow i am implementing aes algorithm"; //plaintext 
String binary=stringToBinary(key); //convertion from plain text to binarydigits 
String res[]=split_at(binary,8); //split binary digits into 8 bits 
int c=0,r=0; 

for(int i=0;i<res.length;i++) //convert each 8 bits into hexadecimal 
{ 
    userKey[r][c]=binaryToHex(res[i]); 
    c++; 
    if(c==4) 
    { 
     c=0; 
     r++; 
     if(r==4) 
     break; 
    } 
} 
public static String[][] split_at(String str,int no)//method 
{ 
    int i=0; 
    int x=0; 
    int l=str.length(); 
    String res[]=new String[(l/no)+1]; 
    int f=0; 
    while(no<1){ 
     res[f]=str.substring(i,no); 
     i=i+x; 
     no=no+x; 
     f++; 
    } 
    if(i<1){ 
     res[f]=str.substring(i,1); 
    } 
    return res; 
} 

我试过这个,但我不知道它是正确的还是不是。我是这个正确的过程与否?如果不是,那么建议我如何将明文转换为十六进制。如何在java中编写代码将明文转换为十六进制?

+0

请在提交问题前努力设置您的代码的格式。如果您不了解如何使用UI编辑器,帮助中心将解释如何使用。 –

+0

你不知道它是否正确?你有没有运行你的代码?如果是这样,它是否将明文转换为十六进制? – CubeJockey

回答

0

让每一个字符,解析为整数,并将其转换为十六进制

例如:

public static void main(String args[]) throws InterruptedException { 
String key = "Hello world";// plaintext 
byte[] x = key.getBytes(); 
StringBuilder sb = new StringBuilder(); 
for (int i = 0; i < x.length; i++) { 
    int b = (int) x[i]; 
    sb.append(Integer.toHexString(b)); 
} 
System.out.println(sb.toString()); 
} 
+0

我得到的输出是48656c6c6f20776f726c64.I需要将这些值保持为4乘4阵列。例如我需要输出为第1行:48 6f 72 00和第2行:65 20 6c 00和第3行:6c 77 64 00和第四行:: 6c 6f 00 00 – devi

1

转换为int字符串的每一个字符:

int character = (int) str.charAt(i); 

然后得到int的十六进制表示:

String hexString = Integer.toHexString(character); 
相关问题