详解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 06 NodeJs
基于NodeJS的前后端分离的思考与实践(四)安全问题解决方案
Sep 26 NodeJs
详解nodejs中的process进程
Mar 19 NodeJs
基于nodejs 的多页面爬虫实例代码
May 31 NodeJs
详解redis在nodejs中的应用
May 02 NodeJs
通过nodejs 服务器读取HTML文件渲染到页面的方法
May 17 NodeJs
基于nodejs的雪碧图制作工具的示例代码
Nov 05 NodeJs
nodeJS进程管理器pm2的使用
Jan 09 NodeJs
Nodejs实现用户注册功能
Apr 14 NodeJs
NodeJS开发人员常见五个错误理解
Oct 14 NodeJs
nodejs+koa2 实现模仿springMVC框架
Oct 21 NodeJs
NodeJS模块Buffer原理及使用方法解析
Nov 11 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在线生成ico文件的代码
2007/10/09 PHP
PHP多线程抓取网页实现代码
2010/07/22 PHP
php socket通信(tcp/udp)实例分析
2016/02/14 PHP
php简单实现批量上传图片的方法
2016/05/09 PHP
php常用字符函数实例小结
2016/12/29 PHP
IE8中使用javascript动态加载CSS的解决方法
2014/06/17 Javascript
Egret引擎开发指南之视觉编程
2014/09/03 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
2015/12/02 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
js document.getElementsByClassName的使用介绍与自定义函数
2016/11/25 Javascript
详解使用nodeJs安装Vue-cli
2017/05/17 NodeJs
JS集合set类的实现与使用方法示例
2019/02/01 Javascript
vue获取data数据改变前后的值方法
2019/11/07 Javascript
JavaScript原生数组函数实例汇总
2020/10/14 Javascript
简述Python中的进程、线程、协程
2016/03/18 Python
PyQt 线程类 QThread使用详解
2017/07/16 Python
Queue 实现生产者消费者模型(实例讲解)
2017/11/13 Python
使用pandas read_table读取csv文件的方法
2018/07/04 Python
python ftp 按目录结构上传下载的实现代码
2018/09/12 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
python使用Geany编辑器配置方法
2020/02/21 Python
Python Selenium库的基本使用教程
2021/01/04 Python
浅析HTML5中header标签的用法
2016/06/24 HTML / CSS
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
中国领先的专业家电网购平台:国美在线
2016/12/25 全球购物
英国户外装备商店:Ultimate Outdoors
2019/05/07 全球购物
Ado与Ado.net的相同与不同
2014/12/08 面试题
查环查孕证明
2014/01/10 职场文书
市场营销个人求职信范文
2014/02/02 职场文书
煤矿安全生产责任书
2014/04/15 职场文书
车辆年检委托书范本
2014/10/14 职场文书
企业办公室主任岗位职责
2015/04/01 职场文书
《实心球》教学反思
2016/02/23 职场文书
python如何读取.mtx文件
2021/04/22 Python