详解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服务器(8):非阻塞是如何实现的
Dec 18 NodeJs
NodeJS学习笔记之Connect中间件模块(一)
Jan 27 NodeJs
NodeJs基本语法和类型
Feb 13 NodeJs
Nodejs如何搭建Web服务器
Mar 28 NodeJs
nodeJs爬虫获取数据简单实现代码
Mar 29 NodeJs
nodejs进阶(6)—连接MySQL数据库示例
Jan 07 NodeJs
初探nodeJS
Jan 24 NodeJs
nodejs搭建本地服务器并访问文件的方法
Mar 03 NodeJs
nodejs对express中next函数的一些理解
Sep 08 NodeJs
nodejs实现超简单生成二维码的方法
Mar 17 NodeJs
nodejs读取图片返回给浏览器显示
Jul 25 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强制文件下载而非在浏览器打开的自定义函数分享
2014/05/08 PHP
PHP中数组的分组排序实例
2014/06/01 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
tp5 实现列表数据根据状态排序
2019/10/18 PHP
用javascript实现分割提取页面所需内容
2007/05/09 Javascript
Jquery 动态循环输出表格具体方法
2013/11/23 Javascript
javascript设置金额样式转换保留两位小数示例代码
2013/12/04 Javascript
jQuery遍历节点树方法分析
2016/09/08 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
微信小程序实战之登录页面制作(5)
2020/03/30 Javascript
JS实现table表格固定表头且表头随横向滚动而滚动
2017/10/26 Javascript
VUE2.0中Jsonp的使用方法
2018/05/22 Javascript
Angular5中提取公共组件之radio list的实例代码
2018/07/10 Javascript
微信小程序实现点击按钮后修改颜色
2019/12/05 Javascript
微信小程序开发中var that =this的用法详解
2020/01/18 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
[01:33]真香警告!DOTA2勇士令状不朽珍藏Ⅱ饰品欣赏
2018/06/26 DOTA
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
python中redis的安装和使用
2016/12/04 Python
Python中Django 后台自定义表单控件
2017/03/28 Python
python全局变量引用与修改过程解析
2020/01/07 Python
python对指定字符串逆序的6种方法(小结)
2020/04/02 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
澳大利亚设计的婴儿和女孩的衣服:Oobi
2018/12/16 全球购物
网吧收银员岗位职责
2013/12/14 职场文书
便利店投资创业计划书
2014/02/08 职场文书
元旦联欢会感言
2014/03/04 职场文书
竞聘上岗演讲
2014/05/19 职场文书
校长新学期致辞
2015/07/30 职场文书
健康教育主题班会
2015/08/14 职场文书
九年级数学教学反思
2016/02/17 职场文书
MySQL库表名大小写的选择
2021/06/05 MySQL
nginx共享内存的机制详解
2022/03/21 Servers