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 以降のみ)。
- node.js を補完するために Java から utf8 エンコーディングを削除しようとしましたが、うまくいきませんでした。何が間違っているのですか?