簡體   English   中英

如何將鍵字節數組轉換為字符串,反之亦然

[英]How to convert key byte array to string and vice versa

我正在生成兩個密鑰: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

輸出:

在此處輸入圖片說明

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

問題在這里...

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

您正在從byte []轉換字符串..它會添加一些額外的字符...,以便將其作為字節[]本身來傳輸此類信息..或者您可以嘗試使用base64來編碼和解碼密鑰...它可能救命。

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

要正確打印數組內容,請使用Arrays.toString()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM