Crypto-JS加密

CryptoJS (crypto.js) 为 JavaScript 提供了各种各样的加密算法。目前已支持的算法包括: MD5 SHA-1 SHA-256 AES等,这里以AES和base64为例简单介绍一下使用方法。

下载安装

Node.js

1
npm install crypto-js

官网地址

‘https://code.google.com/p/crypto-js’
这个地址是需要翻墙才能下载

github

‘https://github.com/brix/crypto-js’

这里要提到的是,官网和github下载的文件略有差异,首先介绍官网下载的压缩包,分为rollupscomponents两个文件夹。

  • rollups下面是整合后的js,每一个可以单独通过js引用使用。
  • componets下面刚包括所有的组件源码,以及各组件压缩后的js文件。

以AES为例:

1
2
3
4
5
<script src="rollups/aes.js"></script>
//or
<script src="components/core.js"></script>
<script src="components/cipher-core.js"></script>
<script src="components/aes.js"></script>

github上的js文件,和官网的components文件夹相同

使用

依赖node.js

npm安装后

1
2
var SHA256 = require("crypto-js/sha256");
console.log(SHA256("Message"));

官方文档和github都有详细说明,这里不过多介绍。

引入js文件

  • aes

使用aes加密时,首先要定义密钥与盐

1
2
var key = CryptoJS.enc.Utf8.parse("5DquhGQAB9xdRUSp");	//密钥
var iv = CryptoJS.enc.Utf8.parse("szWDBBzTYBQX2apH"); //盐

由前台或者后台随机生成,之后定义加密和解密的方法

1
2
3
4
5
6
7
8
9
10
11
//加密
function Encrypt(word) {
var srcs = CryptoJS.enc.Utf8.parse(word);
var encrypted = CryptoJS.AES.encrypt(srcs, key, {iv: iv});
return encrypted.toString();
}
//解密
function Decrypt(word) {
var decrypt = CryptoJS.AES.decrypt(word, key, {iv: iv});
return decrypt.toString(CryptoJS.enc.Utf8);
}

  • base64

base64加密和md5加密方式类似,直接调用加密即可

1
2
3
4
5
6
7
8
9
10
//加密
function EncryptBase64(word){
var str = CryptoJS.enc.Utf8.parse(word);
return CryptoJS.enc.Base64.stringify(str);
}
//解密
function DecryptBase64(word){
var words = CryptoJS.enc.Base64.parse(word);
return words.toString(CryptoJS.enc.Utf8);
}

最后来验证一下

1
2
3
4
5
6
7
8
9
10
11
12
var word = JSON.stringify({
name : '张三'
});

console.log(Encrypt(word)); //oCUAMtH+jfKEt8e2VYci/Cz9GDXFY+tCt2ONjsKpGa0=
console.log(Decrypt(Encrypt(word))); //{"name":"张三"}

console.log(EncryptBase64(word)); //eyJuYW1lIjoi5byg5LiJIn0=
console.log(DecryptBase64(EncryptBase64(word))); //{"name":"张三"}

console.log(EncryptBase64(Encrypt(word))); //b0NVQU10SCtqZktFdDhlMlZZY2kvQ3o5R0RYRlkrdEN0Mk9OanNLcEdhMD0=
console.log(Decrypt(DecryptBase64(EncryptBase64(Encrypt(word))))); //{"name":"张三"}
文章目录
  1. 1. 下载安装
    1. 1.1. Node.js
    2. 1.2. 官网地址
    3. 1.3. github
  2. 2. 使用
    1. 2.1. 依赖node.js
    2. 2.2. 引入js文件
|