-2
我有String s="abc";
加密字符串顯示爲:ðá£ÅÉûË¿~?‰+×µÚ
並解密了相同的值。如何解密java中的加密字符串
但現在我有和ðá£ÅÉûË¿~?‰+×µÚ
一樣的加密字符串,我可以得到/解密它嗎?下面的代碼我正在使用。
String key = "Bar12345Bar12345"; // 128 bit key
// Create key and cipher
Key aesKey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
// encrypt the text
cipher.init(Cipher.ENCRYPT_MODE, aesKey);
byte[] encrypted = cipher.doFinal(text.getBytes());
String e=new String(encrypted);
byte[] encrypted1 = cipher.doFinal(e.getBytes());
System.out.println(encrypted.length+" "+encrypted1.length);
System.out.println(e);
// decrypt the text
cipher.init(Cipher.DECRYPT_MODE, aesKey);
String decrypted = new String(cipher.doFinal(encrypted));
System.out.println(decrypted);
您的第一個錯誤是使用'Stri ng'作爲二進制數據的容器。事實並非如此。你應該在'byte []'中保存密文。 – EJP
爲什麼你已經加密了兩次文本?一旦加密是好的 –
[它適用於我](http://ideone.com/9FFpnC)。由於您沒有使用第二階段加密結果,因此您實際上不需要雙重加密。此外,字符串不能保存二進制數據。您需要將密文byte []'編碼爲Hex或Base64以使其可打印。 –