當我嘗試使用AES ECB,加密鑰匙的MD5哈希 ,又重新將其解密,我得到不同勢的結果:AES加密和解密數據丟失
以前:>•LY†lrœËGQ2¶ª€
後:0|t < d)§¥>乙W¯¯
我用於加密的代碼和解密是:
public class AES {
private String a= "AES/ECB/NoPadding";
private byte[] key;
Cipher c;
public AES(byte [] key) throws NoSuchAlgorithmException, NoSuchPaddingException{
this.key = key;
c = Cipher.getInstance(a);
}
public String encrypt(byte[] Data) throws Exception{
Key k = new SecretKeySpec(key, "AES");
c.init(Cipher.ENCRYPT_MODE, k);
byte[] encoded = c.doFinal(Data);
String encrypted= new String(encoded);
return encrypted;
}
public String decrypt(byte[] v) throws Exception{
Key k = new SecretKeySpec(key, "AES");
if(v.length%16!=0)
return null;
c.init(Cipher.DECRYPT_MODE, k);
byte[] decv = c.doFinal(v);
String decrypted = new String(decv);
return decrypted;
}
}
此操作丟失信息:'字符串加密=新字符串(編碼);'。不要試圖將任意二進制數據編碼爲像這樣的文本。使用base64或十六進制。 –
非常感謝!那是導致損失的線路 –