我正在尝试使用谷歌的https://code.google.com/p/crypto-js/#AES在JavaScript中加密某些内容,就像示例一样.问题是,我试图用Java解密它的结果是不同的.我可以看到的唯一区别是填充(CryptoJs使用Pkcs7而java使用Pkcs5),读了一下我意识到Pkcs7和Pkcs5基本相同.
以下是我在Javascript中进行加密的代码示例:
var crypto = require('./aes.js');
var login = 'ABCD';
var key = crypto.CryptoJS.enc.Hex.parse('0123456789012345');
var ive = crypto.CryptoJS.enc.Hex.parse('0123456789012345');
var encrypted = crypto.CryptoJS.AES.encrypt(login, key, {iv: ive});
console.log('encrypted msg = ' + encrypted)
Run Code Online (Sandbox Code Playgroud)
这是我用Java解密它的代码:
public String decrypt(byte[] cipherText) throws Exception {
String psk = "0123456789012345";
String iv = "0123456789012345";
try {
String encryptionKey = psk;
final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding", "SunJCE");
final SecretKeySpec key = new SecretKeySpec(encryptionKey.getBytes(UTF8), "AES");
cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(iv.getBytes(UTF8)));
return new String(cipher.doFinal(cipherText), UTF8);
} catch (BadPaddingException | …Run Code Online (Sandbox Code Playgroud)