详解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爬虫抓取数据乱码问题总结
Jul 03 NodeJs
Nodejs 发送Post请求功能(发短信验证码例子)
Feb 09 NodeJs
实例分析nodejs模块xml2js解析xml过程中遇到的坑
Mar 18 NodeJs
详解nodejs操作mongodb数据库封装DB类
Apr 10 NodeJs
nodejs个人博客开发第五步 分配数据
Apr 12 NodeJs
解析NodeJS异步I/O的实现
Apr 13 NodeJs
nodejs操作mysql实现增删改查的实例
May 28 NodeJs
nodejs动态创建二维码的方法
Aug 12 NodeJs
nodejs操作mongodb的增删改查功能实例
Nov 09 NodeJs
详解Nodejs mongoose
Jun 10 NodeJs
NodeJS模块Buffer原理及使用方法解析
Nov 11 NodeJs
NodeJs使用webpack打包项目的方法详解
Feb 28 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中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
2018/03/30 PHP
Ajax+PHP实现的删除数据功能示例
2019/02/12 PHP
使用javascript:将其它类型值转换成布尔类型值的解决方法详解
2013/05/07 Javascript
javascript遍历控件实例详细解析
2014/01/10 Javascript
jquery实现带二级菜单的导航示例
2014/04/28 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
2015/03/19 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
解决URL地址中的中文乱码问题的办法
2017/02/10 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
2017/06/17 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
2018/07/30 Javascript
json字符串传到前台input的方法
2018/08/06 Javascript
详解javascript appendChild()的完整功能
2018/08/18 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
2019/04/30 Javascript
JavaScript实现留言板案例
2020/03/17 Javascript
javascript实现简单页面倒计时
2021/03/02 Javascript
NodeJS和浏览器中this关键字的不同之处
2021/03/03 NodeJs
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
python实现旋转和水平翻转的方法
2018/10/25 Python
python3实现名片管理系统
2020/11/29 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
解决python中导入win32com.client出错的问题
2019/07/26 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
如何使用python自带IDLE的几种方法
2020/10/10 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
2020/12/01 Python
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
服务承诺书范文
2014/05/19 职场文书
公司副总经理任命书
2014/06/05 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书
Nginx已编译的nginx-添加新模块
2021/04/01 Servers
JS 基本概念详细介绍
2021/10/16 Javascript