目录
CryptoJS 只一个 JavaScript 的加解密的工具包。它支持多种的算法:MD5、SHA1、SHA2、SHA3、RIPEMD-160 哈希散列,进行 AES、DES、Rabbit、RC4、Triple DES 加解密。
# CryptoJS 的安装
使用 npm 安装
npm install crypto-js
使用 Bower 安装
bower install crypto-js
# CryptoJS 的使用
CryptoJS 的使用分为两种环境:Node.js 服务器端和浏览器端
# 一、在 Node.js 里使用
ES6 方式:
import sha256 from 'crypto-js/sha256';
import hmacSHA512 from 'crypto-js/hmac-sha512';
import Base64 from 'crypto-js/enc-base64';
const message, nonce, path, privateKey; // ...
const hashDigest = sha256(nonce + message);
const hmacDigest = Base64.stringify(hmacSHA512(path + hashDigest, privateKey));
非 ES6 方式:
var AES = require("crypto-js/aes");
var SHA256 = require("crypto-js/sha256");
...
console.log(SHA256("Message"));
可以引入整个 CryptoJS
var CryptoJS = require('crypto-js');
console.log(CryptoJS.HmacSHA1('Message', 'Key'));
# 二、在浏览器客户端使用
RequireJS 方式:
导入 CryptoJS 模块
require.config({
packages: [
{
name: 'crypto-js',
location: 'path-to/bower_components/crypto-js',
main: 'index',
},
],
});
require(['crypto-js/aes', 'crypto-js/sha256'], function(AES, SHA256) {
console.log(SHA256('Message'));
});
或者导入整个 CryptoJS 模块,这样可以使用所有加解密的方法
// Above-mentioned will work or use this simple form
require.config({
paths: {
'crypto-js': 'path-to/bower_components/crypto-js/crypto-js',
},
});
require(['crypto-js'], function(CryptoJS) {
console.log(CryptoJS.HmacSHA1('Message', 'Key'));
});
非 RequireJS 方式:
<script type="text/javascript" src="path-to/bower_components/crypto-js/crypto-js.js"></script>
<script type="text/javascript">
var encrypted = CryptoJS.AES(...);
var encrypted = CryptoJS.SHA256(...);
</script>
# CryptoJS API
这里以 AES 加密,加密的对象分为两种情况:纯文本和对象。
# 纯文本加密
var CryptoJS = require('crypto-js');
// Encrypt
var ciphertext = CryptoJS.AES.encrypt('my message', 'secret key 123').toString();
// Decrypt
var bytes = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');
var originalText = bytes.toString(CryptoJS.enc.Utf8);
console.log(originalText); // 'my message'
# 对象加密
var CryptoJS = require('crypto-js');
var data = [{ id: 1 }, { id: 2 }];
// Encrypt
var ciphertext = CryptoJS.AES.encrypt(JSON.stringify(data), 'secret key 123').toString();
// Decrypt
var bytes = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');
var decryptedData = JSON.parse(bytes.toString(CryptoJS.enc.Utf8));
console.log(decryptedData); // [{id: 1}, {id: 2}]