2016-07-29 115 views
0

我生成兩個密鑰:1)公鑰和2)私有密鑰,都存儲爲字節數組, 我需要這兩個鍵轉換成字符串,並將其發送到接收端和接收端將字符串轉換爲字節數組。但不知何故其轉換字符串字節數組如何關鍵的字節數組轉換爲字符串,反之亦然

編碼後賦予不同密鑰字節:

System.out.println("certificate insertionSuccessful."+certPojo.getUser_public_key()+", "+certPojo.getUser_private_key()); 

String str1 = new String(certPojo.getUser_public_key()); 
String str2 = new String(certPojo.getUser_private_key()); 

System.out.println("publickey===>"+str1); 
System.out.println("privatekey===>"+str2); 

byte[] bytes1 = str1.getBytes(); 
byte[] bytes2 = str2.getBytes(); 

System.out.println("Text [Byte Format] : " + bytes1); 
System.out.println("Text [Byte Format] : " + bytes2); 

I also tried using UTF-8 but nothing works 

輸出:

enter image description here

+0

你如何比較字節數組? – Natalia

+0

'滿足Arrays.equals()' –

回答

0

書寫串具有任意字節調用默認的字符編碼。由於某些字節序列在編碼中不能用字符表示,因此它們在轉換中會丟失。如果需要將字節轉換爲字符串,我建議在Base64中編碼字節。見https://docs.oracle.com/javase/8/docs/api/java/util/Base64.html

+0

我也試過Base64編碼,但沒有陽性結果 – Mohit

+0

這工作,你有沒有什麼在做不同? ()拋出異常{byte = [] in = new byte [] {0,0,2,3,4,6,0x0e,0x0c,1,7,8,9}; String asString = Base64.encodeBase64String(in); byte [] out = Base64.decodeBase64(asString); assertArrayEquals(out,in); }' –

0

的問題是在這裏...

String str1 = new String(certPojo.getUser_public_key()); 
String str2 = new String(certPojo.getUser_private_key()); 

您從字節轉換的String [] ..它會增加一些額外的字符...所以它的麪糊爲字節這種轉讓信息[]本身..或者你可以嘗試使用base64來編碼和解碼密鑰......這可能會有所幫助。

0

byte[](或任何其他數組)沒有覆蓋toString,所以它們顯示的只是對象標識符本身。因此,兩個不同的數組永遠不會顯示相同的字符串表示。

要打印適當的數組內容,使用Arrays.toString()

相關問題