详解nodejs与javascript中的aes加密

 更新时间:2016年05月22日 08:32:38   作者:西安王磊  
这篇文章主要为大家详细介绍了nodejs与javascript中aes加密的相关资料,感兴趣的朋友可以参考一下

一、简介

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/

以上就是本文的全部内容,希望对大家的学习有所帮助。

相关文章

  • 如jQuery般易用的api风格代码分享

    如jQuery般易用的api风格代码分享

    最近几天闲来无事,随便写了点代码玩了玩。个人觉得,应该把编码当做一种乐趣,要不然会觉得很累...
    2011-01-01
  • js网页右下角提示框实例

    js网页右下角提示框实例

    这篇文章主要介绍了js网页右下角提示框的实现方法,以实例展示了css样式与HTML布局,以及对应的js显示与关闭提示框等功能,需要的朋友可以参考下
    2014-10-10
  • JavaScript函数的4种调用方法详解

    JavaScript函数的4种调用方法详解

    了解函数的调用过程有助于深入学习与分析JavaScript代码。本文是JavaScript高级这个系列中的第三篇文章,主要介绍JavaScript中函数的四种使用形式
    2014-04-04
  • ​​​​​​​分享7 个实用 TypeScript 单行代码

    ​​​​​​​分享7 个实用 TypeScript 单行代码

    这篇文章主要介绍了​​​​​​​分享7 个实用 TypeScript 单行代码,其中包括泛型、断言等高级用法,需要的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-05-05
  • 如何在uni-app使用微软的文字转语音服务

    如何在uni-app使用微软的文字转语音服务

    有了语音识别,交流就会变得很简单,下面这篇文章主要给大家介绍了关于如何在uni-app使用微软的文字转语音服务的相关资料,需要的朋友可以参考下
    2022-06-06
  • layui 阻止图片上传的实例(before方法)

    layui 阻止图片上传的实例(before方法)

    今天小编就为大家分享一篇layui 阻止图片上传的实例(before方法),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • Javascript中Object和Map之间的转换方法

    Javascript中Object和Map之间的转换方法

    在许多编程语言中,Object和Map都是用于存储键值对的数据结构,下面这篇文章主要给大家介绍了关于Javascript中Object和Map之间的转换方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • JScript的条件编译

    JScript的条件编译

    JScript的条件编译...
    2007-05-05
  • 简单实现js无缝滚动效果

    简单实现js无缝滚动效果

    这篇文章主要教大家如何简单实现js无缝滚动效果,js轮播图实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • js限制文本框只能输入中文的方法

    js限制文本框只能输入中文的方法

    这篇文章主要介绍了js限制文本框只能输入中文的方法,涉及javascript正则匹配及鼠标事件的相关技巧,非常简单实用,需要的朋友可以参考下
    2015-08-08

最新评论