java - 将JAVA中的aes加密转换为节点
问题描述
我有一个java脚本
private static final String ALGO = "AES";
public static String encrypt(String Data,String secretKeyPhrase) throws Exception {
Key key = new SecretKeySpec(secretKeyPhrase.getBytes(), ALGO);
Cipher c = Cipher.getInstance(ALGO);
c.init(Cipher.ENCRYPT_MODE, key);
byte[] encVal = c.doFinal(Data.getBytes());
String encryptedValue = Base64.getEncoder().encodeToString(encVal);
encryptedValue= URLEncoder.encode(encryptedValue, "UTF-8");
return encryptedValue;
}
public static void main(String [] ar) throws Exception{
String result2=AESUtil.encrypt("3483", "BDFHJLNPpnljhfdb");
System.out.println(result2);
}
我需要在节点中复制它我这样做
var ciphertext = CryptoJS.AES.encrypt('3483', 'BDFHJLNPpnljhfdb').toString();
控制台.log(密文);
在 java 结果中告诉我
3483
sAllhJ7zLxBKr8hJ7tLf9w%3D%3D
但在节点
3483
U2FsdGVkX19Z/mnjJy3hYDcXfWnH5eayYngWMtUT1lw=
我做错了什么?
提前致谢。
解决方案
嗨我可以用节点加密这是脚本
function encrypt(plaintext) {
var data = plaintext;
var iv = new Buffer(0);
const key = 'BDFHJLNPpnljhfdb'
var cipher = crypto.createCipheriv('aes-128-ecb',new Buffer(key),new Buffer(iv))
var crypted = cipher.update(data,'utf-8','base64')
crypted += cipher.final('base64')
return crypted;
}
结果是 sAllhJ7zLxBKr8hJ7tLf9w==
推荐阅读
- debugging - 为什么 Pycharm 调试器总是停在入口点?
- node.js - 使用 google drive-drive-api-v3 和 node js 将文件复制到共享的 google 驱动器时,有没有办法专门针对共享驱动器
- mysql - MySQL 未使用最佳索引
- javascript - 我怎样才能得到正确的响应承诺?
- c# - Newtonsoft JsonConvert.SerializeObject 使用属性名称 insted [JsonProperty("")]
- c - 计算C中两个日期的天数差
- c# - Ocelot - 下游-上游中不同的占位符
- ubuntu-18.04 - Cisco VPN annyconnect 客户端无法在 Ubuntu 上运行
- javascript - 为什么结果是“未定义范围”
- xml - C# 嵌套自定义配置:元素集合中的替代元素类型