nodejs中aes-128-cbc加密和解密
来源:互联网 发布:台湾网络加速器 编辑:程序博客网 时间:2024/05/16 07:57
转自:http://www.tuicool.com/articles/YRZFZ3U
和java程序进行交互的时候,java那边使用AES 128位填充模式:AES/CBC/PKCS5Padding加密方法,在nodejs中采用对应的aes-128-cbc加密方法就能对应上,因为有使用向量(iv),所以nodejs中要用createCipheriv方法,而不是createCipher。
在这类加密和解密的计算中,最最要注意的就是中文编码问题,不然铁定采坑。我踩完坑了,把能跑的代码发上来下,运行环境nodejs 4.4.6。
var crypto = require('crypto');/** * 加密方法 * @param key 加密key * @param iv 向量 * @param data 需要加密的数据 * @returns string */var encrypt = function (key, iv, data) { var cipher = crypto.createCipheriv('aes-128-cbc', key, iv); var crypted = cipher.update(data, 'utf8', 'binary'); crypted += cipher.final('binary'); crypted = new Buffer(crypted, 'binary').toString('base64'); return crypted;};/** * 解密方法 * @param key 解密的key * @param iv 向量 * @param crypted 密文 * @returns string */var decrypt = function (key, iv, crypted) { crypted = new Buffer(crypted, 'base64').toString('binary'); var decipher = crypto.createDecipheriv('aes-128-cbc', key, iv); var decoded = decipher.update(crypted, 'binary', 'utf8'); decoded += decipher.final('utf8'); return decoded;};var key = '751f621ea5c8f930';console.log('加密的key:', key.toString('hex'));var iv = '2624750004598718';console.log('加密的iv:', iv);var data = "Hello, nodejs. 演示aes-128-cbc加密和解密";console.log("需要加密的数据:", data);var crypted = encrypt(key, iv, data);console.log("数据加密后:", crypted);var dec = decrypt(key, iv, crypted);console.log("数据解密后:", dec);运行输出结果:加密的key: 751f621ea5c8f930加密的iv: 2624750004598718需要加密的数据: Hello, nodejs. 演示aes-128-cbc加密和解密数据加密后: 7L/q8ZzHLaNI1ToA/RA9b/eznGIYtO9dhTqoo105bNtsTo/QOoCTyljNy6DvU1X+数据解密后: Hello, nodejs. 演示aes-128-cbc加密和解密
1 0
- nodejs中aes-128-cbc加密和解密
- php aes 128 CBC加密、解密函数
- AES CBC模式加密/解密
- AES-128-CBC方式加密解密,已测试通过
- php AES cbc模式 pkcs7 128位加密解密
- javascript实现AES加密解密(ECB&CBC)
- AES加密解密(CBC模式)
- android加密,php解密 , AES,CBC, PKCS7Padding
- C++ 和 java 使用 AES CBC 128 加解密
- AES CBC和CTR加解密实例
- AES CBC和CTR加解密实例
- mac下熟悉MD5加密、AES-128-CBC加密解密字符串追加base64.。
- JAVA中AES加密和解密
- Android中AES加密和解密
- JAVA中AES对称加密和解密
- JAVA中AES对称加密和解密
- AES CBC方式,PKCS7填充加密解密,和其他语言试过,可以共用
- AES加密和解密
- web编程课程小结
- Android-聊聊MVC设计模式
- 安全之初级篇——加解密、签名和证书理解分析
- 充值
- Suse 11 Install Nginx 1.10.1
- nodejs中aes-128-cbc加密和解密
- 开源地图OSM Gis 下只屏蔽地图区域的修改方法!
- wireless_iw
- 迎接嵌入式开源篇章——RISC V
- CS231n第八课:目标检测定位学习记录
- 161220
- P1086 花生采摘 02JuniorT2
- 【Memcache】Memcache安全配置
- 免费的论文查重网站