我創建了一個包含128位密鑰的SecretkeySpec對象。 我想這個關鍵字在一個字符串(這個字符串需要放回原來的關鍵),所以我使用Base64編碼。JAVA:字符串問題的128位密鑰並返回
這是我的鑰匙怎麼看起來從字節數組的原始格式轉換成字符:
*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位密鑰轉換爲可讀格式,也許是一個解釋,我錯誤的想法。
我對任何拼寫錯誤表示歉意,英文不是我的母語。
在此先感謝
你正在使用什麼`Base64`類?它來自Apache Codec庫嗎? – 2010-12-04 16:30:37
`eF.getSpec()。getEncoded()`做了什麼?我在解碼部分看不到類似的調用。 – casablanca 2010-12-04 16:48:25
@casablanca:我*推測*它是``SecretKeySpec`類的``getEncoded()`方法](http://download.oracle.com/javase/1.4.2/docs/api/javax/crypto/spec /SecretKeySpec.html#getEncoded%28%29)。如果是這種情況,那麼它應該簡單地返回代表密鑰的原始字節。 – 2010-12-04 16:53:07