详解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的url截取模块url-extract的使用实例
Nov 18 NodeJs
基于 Docker 开发 NodeJS 应用
Jul 30 NodeJs
nodejs爬虫抓取数据之编码问题
Jul 03 NodeJs
nodejs连接mongodb数据库实现增删改查
Dec 01 NodeJs
nodejs实例解析(输出hello world)
Jan 03 NodeJs
详谈Angular路由与Nodejs路由的区别
Mar 05 NodeJs
NodeJs使用Mysql模块实现事务处理实例
May 31 NodeJs
nodejs构建本地web测试服务器 如何解决访问静态资源问题
Jul 14 NodeJs
nodejs判断文件、文件夹是否存在及删除的方法
Nov 10 NodeJs
nodejs初始化init的示例代码
Oct 10 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
用Nodejs实现在终端中炒股的实现
Oct 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
php中用文本文件做数据库的实现方法
2008/03/27 PHP
php写入、删除与复制文件的方法
2015/06/20 PHP
php实现中文转数字
2016/02/18 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
2010/12/04 Javascript
基于jquery的bankInput银行卡账号格式化
2012/08/22 Javascript
node.js中的events.emitter.listeners方法使用说明
2014/12/10 Javascript
浅谈JavaScript Math和Number对象
2015/01/26 Javascript
学习JavaScript设计模式之代理模式
2016/01/12 Javascript
JavaScript 动态三角函数实例详解
2017/01/08 Javascript
node.js调用Chrome浏览器打开链接地址的方法
2017/05/17 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
2017/09/12 Javascript
JS+Canvas绘制动态时钟效果
2017/11/10 Javascript
详解Vue 事件修饰符capture 的使用
2017/12/29 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
2018/08/14 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
2020/02/27 Javascript
js实现烟花特效
2020/03/02 Javascript
[05:08]2014DOTA2国际邀请赛 Hao专访复仇的胜利很爽
2014/07/15 DOTA
[52:03]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第三场 1月31日
2021/03/11 DOTA
Python实现基本线性数据结构
2016/08/22 Python
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
python 实现自动远程登陆scp文件实例代码
2017/03/13 Python
python和ruby,我选谁?
2017/09/13 Python
对pandas的行列名更改与数据选择详解
2018/11/12 Python
Python爬虫爬取Bilibili弹幕过程解析
2019/10/10 Python
详解在python操作数据库中游标的使用方法
2019/11/12 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
心得体会怎么写
2013/12/30 职场文书
浙大毕业生自荐信
2014/01/26 职场文书
信息与计算科学专业推荐信
2014/02/23 职场文书
幼教求职信
2014/03/12 职场文书
保密承诺书范文
2014/03/27 职场文书
2015年小学美术工作总结
2015/05/25 职场文书
2016年春季运动会通讯稿
2015/11/25 职场文书
2021好看的国漫排行榜前十名 《完美世界》上榜,《元龙》排名第一
2022/03/18 国漫