有个对接需求,对方后台使用java编写的也提供了相关的工具类。但是我们是用node做的后台。所以加解密上出了问题求大神能给帮助一下。
现在输出的内容长度都不一样的。
- java 代码
public static String encryptAES(String content, String aes_key) {
try {
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
// 需手动指定 SecureRandom 随机数生成规则,否则在Linux上可能生成随机key
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(aes_key.getBytes());
keyGenerator.init(128, secureRandom);
SecretKey secretKey = keyGenerator.generateKey();
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encrypted = cipher.doFinal(content.getBytes("utf-8"));
return new String(Base64.encodeBase64(encrypted), "utf-8");
} catch (Exception e) {
log.error("报文进行AES加密出错",e);
}
return null;
}
- node
const cus_key = CryptoJS.enc.Utf8.parse(aes_key);
const cus_iv = CryptoJS.enc.Utf8.parse(aes_key);
const ciphertext = btoa(
CryptoJS.AES.encrypt(body, cus_key, {
iv: cus_iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}).toString()
);