我需要用 java 加密并用 node.js 解密。解密结果已损坏。
这是java代码:
public String encrypt(SecretKey key, String message){
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] stringBytes = message.getBytes("UTF8");
byte[] raw = cipher.doFinal(stringBytes);
// converts to base64 for easier display.
BASE64Encoder encoder = new BASE64Encoder();
String base64 = encoder.encode(raw);
return base64;
}
这是 node.js 代码:
AEse3SCrypt.decrypt = function(cryptkey, encryptdata) {
encryptdata = new Buffer(encryptdata, 'base64').toString('binary');
var decipher = crypto.createDecipher('aes-128-cbc', cryptkey);
decipher.setAutoPadding(false);
var decoded = decipher.update(encryptdata);
decoded += decipher.final();
return decoded;
}
As a key I use: "[B@4ec6948c"
The jave encrypted result is: "dfGiiHZi8wYBnDetNhneBw=="<br>
The node.js result is garbich....
- 在java中我使用“PKCS5Padding”。在 node.js 中关于填充应该做什么?我做了 setAutoPadding(false)。如果我不这样做,我会得到错误解密失败。(仅来自 node.js 版本 0.8)。
- 我试图从 java 中删除 utf8 编码以与 node.js 互补,但它没有用。知道有什么问题吗?