当我尝试使用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或十六进制。 –
非常感谢!那是导致损失的线路 –