详解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进程管理模块forever详解
Jun 01 NodeJs
nodejs之请求路由概述
Jul 05 NodeJs
Nodejs学习笔记之Global Objects全局对象
Jan 13 NodeJs
nodejs实现获取当前url地址及url各种参数值
Jun 25 NodeJs
详解Nodejs的timers模块
Dec 22 NodeJs
详解nodejs中的process进程
Mar 19 NodeJs
nodejs个人博客开发第四步 数据模型
Apr 12 NodeJs
详解nodeJS之路径PATH模块
May 31 NodeJs
nodejs实现连接mongodb数据库的方法示例
Mar 15 NodeJs
nodejs使用socket5进行代理请求的实现
Feb 21 NodeJs
nodejs如何在package.json中设置多条启动命令
Mar 16 NodeJs
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
May 30 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/06/07 PHP
zend framework多模块多布局配置
2011/02/26 PHP
php 模拟get_headers函数的代码示例
2013/04/27 PHP
基于jquery的loading效果实现代码
2010/11/05 Javascript
js 判断脚本加载完毕的代码
2011/07/13 Javascript
关于innerHTML后丢失动态绑定的EVENT问题解决方法
2013/05/19 Javascript
jquery+ajax验证不通过也提交表单问题处理
2014/12/12 Javascript
浅谈js中的闭包
2015/03/16 Javascript
JQuery中节点遍历方法实例
2015/05/18 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
基于jquery实现智能提示控件intellSeach.js
2016/03/17 Javascript
Vuejs第十三篇之组件——杂项
2016/09/09 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
jQuery的deferred对象使用详解
2016/09/25 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
微信小程序实战之自定义toast(6)
2017/04/18 Javascript
Vue应用部署到服务器的正确方式
2017/07/15 Javascript
JS 实现banner图片轮播效果(鼠标事件)
2017/08/04 Javascript
深入理解Vue 单向数据流的原理
2017/11/09 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
浅谈在vue中使用mint-ui swipe遇到的问题
2018/09/27 Javascript
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
Python使用win32 COM实现Excel的写入与保存功能示例
2018/05/03 Python
python实现旋转和水平翻转的方法
2018/10/25 Python
基于PyQt4和PySide实现输入对话框效果
2019/02/27 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
jenkins+python自动化测试持续集成教程
2020/05/12 Python
css3实现针线缝合效果(图解步骤)
2013/02/04 HTML / CSS
稀有和绝版书籍:Biblio.com
2017/02/02 全球购物
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
党员年终民主评议的自我评价
2013/11/05 职场文书
食品厂厂长岗位职责
2014/01/30 职场文书
运动会报道稿300字
2014/10/02 职场文书
雷峰塔导游词
2015/02/09 职场文书
酒店人事主管岗位职责
2015/04/11 职场文书
2015年法务工作总结范文
2015/05/23 职场文书