2016-06-23 33 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); 
相關問題