详解nodejs与javascript中的aes加密


Posted in NodeJs onMay 22, 2016

一、简介

1.aes加密简单来说,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。高级加密标准已然成为对称密钥加密中最流行的算法之一。

2.AES的区块长度固定为128 比特,密钥长度则可以是128,192或256比特;而Rijndael使用的密钥和区块长度可以是32位的整数倍,以128位为下限,256比特为上限。包括AES-ECB,AES-CBC,AES-CTR,AES-OFB,AES-CFB。

3.在这里我们只接受常用的ECB方式 + pkcs7padding(与pkcs5padding值相同)填充加密。 

二、应用

1.nodejs中aes的使用

var crypto = require('crypto');

var aesutil = module.exports = {};

/**
 * aes加密
 * @param data 待加密内容
 * @param key 必须为32位私钥
 * @returns {string}
 */
aesutil.encryption = function (data, key, iv) {
 iv = iv || "";
 var clearEncoding = 'utf8';
 var cipherEncoding = 'base64';
 var cipherChunks = [];
 var cipher = crypto.createCipheriv('aes-256-ecb', key, iv);
 cipher.setAutoPadding(true);
 cipherChunks.push(cipher.update(data, clearEncoding, cipherEncoding));
 cipherChunks.push(cipher.final(cipherEncoding));
 return cipherChunks.join('');
}

/**
 * aes解密
 * @param data 待解密内容
 * @param key 必须为32位私钥
 * @returns {string}
 */
aesutil.decryption = function (data, key, iv) {
 if (!data) {
  return "";
 }
 iv = iv || "";
 var clearEncoding = 'utf8';
 var cipherEncoding = 'base64';
 var cipherChunks = [];
 var decipher = crypto.createDecipheriv('aes-256-ecb', key, iv);
 decipher.setAutoPadding(true);
 cipherChunks.push(decipher.update(data, cipherEncoding, clearEncoding));
 cipherChunks.push(decipher.final(clearEncoding));
 return cipherChunks.join('');
}

2.javascript中aes的使用

下载第三方库Crypto-js.js git地址:https://github.com/brix/crypto-js

引入src下的crypto-js.js,加密代码如下:

var key = "12345678"  //秘钥必须为:8/16/32位
var message = "123456";

//加密
var encrypt = CryptoJS.AES.encrypt(message, CryptoJS.enc.Utf8.parse(key), {
 mode: CryptoJS.mode.ECB,
 padding: CryptoJS.pad.Pkcs7
});
console.log("value: "+encrypt);

//解密
var decrypt = CryptoJS.AES.decrypt(encrypt, CryptoJS.enc.Utf8.parse(key), {
 mode: CryptoJS.mode.ECB,
 padding: CryptoJS.pad.Pkcs7
});
console.log("value: "+decrypt.toString(CryptoJS.enc.Utf8));

原文作者:西安.王磊
原文出处:http://vipstone.cnblogs.com/

以上就是本文的全部内容,希望对大家的学习有所帮助。

NodeJs 相关文章推荐
轻松创建nodejs服务器(6):作出响应
Dec 18 NodeJs
nodejs通过phantomjs实现下载网页
May 04 NodeJs
用NodeJS实现批量查询地理位置的经纬度接口
Aug 16 NodeJs
详解nodejs 文本操作模块-fs模块(四)
Dec 22 NodeJs
angular2+nodejs实现图片上传功能
Mar 27 NodeJs
nodejs+websocket实时聊天系统改进版
May 18 NodeJs
NodeJS自定义模块写法(详解)
Jun 27 NodeJs
Nodejs下使用gm圆形裁剪并合成图片的示例
Feb 22 NodeJs
nodejs中用npm初始化来创建package.json的实例讲解
Oct 10 NodeJs
nodejs实现聊天机器人功能
Sep 19 NodeJs
浅谈JS和Nodejs中的事件驱动
May 05 NodeJs
node快速搭建后台的实现步骤
Feb 18 NodeJs
NodeJS连接MongoDB数据库时报错的快速解决方法
May 13 #NodeJs
Nodejs获取网络数据并生成Excel表格
Mar 31 #NodeJs
Nodejs学习item【入门手上】
May 05 #NodeJs
NodeJS的Promise的用法解析
May 05 #NodeJs
Windows 系统下设置Nodejs NPM全局路径
Apr 26 #NodeJs
Nodejs Stream 数据流使用手册
Apr 17 #NodeJs
NodeJS创建基础应用并应用模板引擎
Apr 12 #NodeJs
You might like
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
详解php中 === 的使用
2016/10/24 PHP
PHP 匿名函数与注意事项详细介绍
2016/11/26 PHP
Prototype使用指南之ajax
2007/01/10 Javascript
jquery实现带二级菜单的导航示例
2014/04/28 Javascript
jQuery学习笔记之jQuery原型属性和方法
2014/06/09 Javascript
javascript+canvas制作九宫格小程序
2014/12/28 Javascript
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
快速掌握Node.js事件驱动模型
2016/03/21 Javascript
jQuery前端开发35个小技巧
2016/05/24 Javascript
Node.js的文件权限及读写flag详解
2016/10/11 Javascript
vue 设置proxyTable参数进行代理跨域
2018/04/09 Javascript
详解如何在Angular优雅编写HTTP请求
2018/12/05 Javascript
vue实现图片上传预览功能
2019/12/23 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
2020/07/26 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
python共享引用(多个变量引用)示例代码
2013/12/04 Python
详解设计模式中的工厂方法模式在Python程序中的运用
2016/03/02 Python
Python排序搜索基本算法之堆排序实例详解
2017/12/08 Python
python 调用有道api接口的方法
2019/01/03 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
使用Keras实现Tensor的相乘和相加代码
2020/06/18 Python
浅谈Django前端后端值传递问题
2020/07/15 Python
python statsmodel的使用
2020/12/21 Python
国际鲜花速递专家:Floraqueen
2016/11/24 全球购物
墨西哥购物网站:Elektra
2020/01/21 全球购物
管理科学大学生求职信
2013/11/13 职场文书
汽车制造与装配专业自荐信范文
2014/01/02 职场文书
绩效工资分配方案
2014/01/18 职场文书
2014迎新年晚会策划方案
2014/02/23 职场文书
爱国主题班会教案
2015/08/14 职场文书
贷款担保书范本
2015/09/22 职场文书
2016高一新生军训心得体会
2016/01/11 职场文书
2016年社区中秋节活动总结
2016/04/05 职场文书
如何获取numpy array前N个最大值
2021/05/14 Python
未发现nvidia显卡怎么办?Win11系统中未检测到nvidia显卡解决教程
2022/04/08 数码科技