[英]JAVA: 128-bit key to String problem and back
我創建了一個包含128位密鑰的SecretkeySpec對象。 我想在String中使用此鍵(此字符串需要稍后重新放入原始鍵),因此我使用Base64編碼。
這是我的鍵以原始格式從字節數組到chars的方式:
*P??? ?ukL|?~
所以我拿字節並像這樣編碼。
byte[] okay = Base64.encode(eF.getSpec().getEncoded());
現在,當我把它翻譯成字符時,我得到:
S2xEa3Ara0o5blVGYTB3WkRIeUZmZz09DQo=
現在我想讓我的密鑰恢復到base64編碼數組的原始格式。
String dkey = "S2xEa3Ara0o5blVGYTB3WkRIeUZmZz09DQo=";
byte[] key = null;
key = dKey.getBytes();
key = Base64.decode(key);
現在,當我檢查結果時,我得到:
DKlDkp+kJ9nUFa0wZHyFfg==
代替:
*P??? ?ukL|?~
如你所見,這不是我希望看到的結果。 我肯定犯了一個新手的錯誤,請原諒我,但我對編程很新。 如果有人能給我一個將可讀格式轉換為128位密鑰的工作示例,我將不勝感激,也許是我在思考時出錯的解釋。
我為任何拼寫錯誤道歉,英語不是我的母語。
提前致謝
S2xEa3Ara0o5blVGYTB3WkRIeUZmZz09DQo=
解碼為
KlDkp+kJ9nUFa0wZDHyFfg==.
額外的D在開頭是復制和粘貼錯誤嗎?
KlDkp+kJ9nUFa0wZDHyFfg==
反過來是一個有效的base64字符串,解碼為一些二進制數據。 所以看起來你正在進行兩次編碼。
現在,當我把它翻譯成字符時,我得到了
你究竟是怎么做到的? 該步驟是否涉及另一個base64編碼?
您在代碼中遇到了一些錯誤(假設您是從頭頂編寫的)。 這看起來像一個工作版本。 請注意,使用這些內部類並不是很聰明(這里我更喜歡使用Apache Commons Codecs庫,例如它的org.apache.commons.codec.binary.Base64
類)。
package edu.sasik.test.encoding;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
public class TestBase64 {
public static void main(String[] args) {
String base64Str = Base64.encode("Hello World!".getBytes());
System.out.println(base64Str);
byte[] bytes = Base64.decode(base64Str);
System.out.println(new String(bytes));
}
}
輸出:
SGVsbG8gV29ybGQh Hello World!
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.