详解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的模块写法入门(实例代码)
Mar 07 NodeJs
轻松创建nodejs服务器(2):nodejs服务器的构成分析
Dec 18 NodeJs
详解nodejs实现本地上传图片并预览功能(express4.0+)
Jun 28 NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 NodeJs
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
Sep 29 NodeJs
nodejs 图片预览和上传的示例代码
Sep 30 NodeJs
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
Jul 31 NodeJs
NodeJS服务器实现gzip压缩的示例代码
Oct 12 NodeJs
5分钟教你用nodeJS手写一个mock数据服务器的方法
Sep 10 NodeJs
nodejs实现的http、https 请求封装操作示例
Feb 06 NodeJs
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
Dec 14 NodeJs
Nodejs实现微信分账的示例代码
Jan 19 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
php统计文件大小,以GB、MB、KB、B输出
2011/05/29 PHP
优化WordPress中文章与评论的时间显示
2016/01/12 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
js字符串完全替换函数分享
2014/12/03 Javascript
将JavaScript的jQuery库中表单转化为JSON对象的方法
2015/11/17 Javascript
jQuery实现无限往下滚动效果代码
2016/04/16 Javascript
EditPlus中的正则表达式 实战(2)
2016/12/15 Javascript
HTML5 js实现拖拉上传文件功能
2020/11/20 Javascript
Bootstrap路径导航与分页学习使用
2017/02/08 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
详解webpack require.ensure与require AMD的区别
2017/12/13 Javascript
Vue.js更改调试地址端口号的实例
2018/09/19 Javascript
element实现合并单元格通用方法
2019/11/13 Javascript
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
vuecli项目构建SSR服务端渲染的实现
2020/10/30 Javascript
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
[01:03:31]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第二局
2016/02/26 DOTA
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
Django MEDIA的配置及用法详解
2019/07/25 Python
Django 自定义分页器的实现代码
2019/11/24 Python
如何使用python实现模拟鼠标点击
2020/01/06 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
python如何把字符串类型list转换成list
2020/02/18 Python
python中adb有什么功能
2020/06/07 Python
Python LMDB库的使用示例
2021/02/14 Python
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
HTML5实现多张图片上传功能
2016/03/11 HTML / CSS
Trina Turk官网:美国时装和泳装品牌
2018/06/10 全球购物
英国领先的在线高尔夫商店:Scottsdale Golf
2019/08/26 全球购物
青年创业培训欢迎词
2014/01/08 职场文书
大学生个人先进事迹材料范文
2014/05/03 职场文书
新闻学专业求职信
2014/07/28 职场文书
上帝也疯狂观后感
2015/06/09 职场文书
2015年秋季灭鼠工作总结
2015/07/27 职场文书
详解Html5项目适配系统深色模式方案总结
2021/04/14 HTML / CSS