我正在尝试使用AES解密和加密数据,并使用TCP通过网络发送数据。我希望我的算法以这种方式工作:
加密:
!
的base64< d盐作为填充(例如!9W5AQcaNjaWF2Q!)但是,如果我尝试解密base-64消息,则前128位不包含盐但随机数据。
当我尝试解密消息时,我注意到前128位看起来像垃圾:(我确定那些是128位)
我的期望(256位盐)
!R6NYI2DxsRt4Fb6PKZA+Itr0D5jqFo!ayy!CcHGYvN/1vW79KemKLQ39OjVcGI/3y!
我得到了什么
�*M�y��n�']e_PKZA+Itr0D5jqFo!ayy!CcHGYvN/1vW79KemKLQ39OjVcGI/3y!
此外,这是我的加密和解密代码
解密
private byte[] decryptAES(SecretKeySpec key, byte[] text) {
byte[] decryptedText = null;
try {
final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key);
decryptedText = cipher.doFinal(text);
} catch (GeneralSecurityException e) {
System.out.println("[WARNING] Could not decrypt data, wrong key?");
}
return decryptedText;
}
加密
private byte[] encryptAES(SecretKeySpec key, byte[] text) {
byte[] encryptedText = null;
try {
final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key);
encryptedText = cipher.doFinal(text);
} catch (GeneralSecurityException e) {
System.out.println("[ERROR] Could not encrypt data!");
e.printStackTrace();
}
return encryptedText;
}
如何修改这些功能以进行正确的加密/解密?