CryptoJS 使用指南
CryptoJS 是一个开源的JavaScript标准密码学库。
Node.js(install)
依赖:
- Node.js
- npm
安装命令:
1
npm install crypto-js
使用示例
ES6 中使用
1
2
3
4
5
6
7import 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));
在模块系统中使用
1
2
3
4var AES = require("crypto-js/aes");
var SHA256 = require("crypto-js/sha256");
...
console.log(SHA256("Message"));
导入所有的模块
1
2var CryptoJS = require("crypto-js");
console.log(CryptoJS.HmacSHA1("Message", "Key"));
在浏览器中使用
1
2
3
4
5<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>
API
文本加解密
1
2
3
4
5
6
7
8
9
10var CryptoJS = require("crypto-js");
// Encrypt
var ciphertext = CryptoJS.AES.encrypt('my message', 'secret key 123');
// Decrypt
var bytes = CryptoJS.AES.decrypt(ciphertext.toString(), 'secret key 123');
var plaintext = bytes.toString(CryptoJS.enc.Utf8);
console.log(plaintext);
对象类型加解密
1
2
3
4
5
6
7
8
9
10
11
12var CryptoJS = require("crypto-js");
var data = [{id: 1}, {id: 2}]
// Encrypt
var ciphertext = CryptoJS.AES.encrypt(JSON.stringify(data), 'secret key 123');
// Decrypt
var bytes = CryptoJS.AES.decrypt(ciphertext.toString(), 'secret key 123');
var decryptedData = JSON.parse(bytes.toString(CryptoJS.enc.Utf8));
console.log(decryptedData);
库命名空间
Base
原型继承的基础对象。CryptoJS库中,自己实现了一套继承机制。
1
CryptoJS.lib.Base
WordArray
一个32位字的数组。继承Base
。
1
CryptoJS.lib.WordArray
转换为字符串:
1
2
3var string = wordArray + '';
var string = wordArray.toString();
var string = wordArray.toString(CryptoJS.enc.Utf8);
toString()
方法有一个encoder
参数,默认为CryptoJS.enc.Hex
。
BufferedBlockAlgorithm
缓冲块算法抽象模板。继承Base
。
1
CryptoJS.lib.BufferedBlockAlgorithm
Hasher
hash算法抽象模板。继承BufferedBlockAlgorithm
。
1
CryptoJS.lib.Hasher
编码器
Hex
提供16进制编解码支持。
1
CryptoJS.enc.Hex
Latin1
ISO 8859-1
,正式编号为ISO/IEC 8859-1:1998
,又称Latin-1
或“西欧语言”
,是国际标准化组织内ISO/IEC 8859
的第一个8位字符集
。它以ASCII为基础,在空置的0xA0-0xFF
的范围内,加入96个字母及符号,藉以供使用附加符号的拉丁字母语言使用。详细介绍。
1
CryptoJS.enc.Hex
Utf8
提供UTF-8编解码支持。
1
CryptoJS.enc.Utf8
模块列表
核心模块
crypto-js/core
crypto-js/x64-core
crypto-js/lib-typedarrays
哈希算法模块
crypto-js/md5
crypto-js/sha1
crypto-js/sha256
crypto-js/sha224
crypto-js/sha512
crypto-js/sha384
crypto-js/sha3
crypto-js/ripemd160
HMAC算法模块
crypto-js/hmac-md5
crypto-js/hmac-sha1
crypto-js/hmac-sha256
crypto-js/hmac-sha224
crypto-js/hmac-sha512
crypto-js/hmac-sha384
crypto-js/hmac-sha3
crypto-js/hmac-ripemd160
PBKDF2算法
crypto-js/pbkdf2
加解密模块
crypto-js/aes
crypto-js/tripledes
crypto-js/rc4
crypto-js/rabbit
crypto-js/rabbit-legacy
crypto-js/evpkdf
格式化模块
crypto-js/format-openssl
crypto-js/format-hex
编解码模块
crypto-js/enc-latin1
crypto-js/enc-utf8
crypto-js/enc-hex
crypto-js/enc-utf16
crypto-js/enc-base64
工作模式模块
crypto-js/mode-cfb
crypto-js/mode-ctr
crypto-js/mode-ctr-gladman
crypto-js/mode-ofb
crypto-js/mode-ecb
填充方式模块
crypto-js/pad-pkcs7
crypto-js/pad-ansix923
crypto-js/pad-iso10126
crypto-js/pad-iso97971
crypto-js/pad-zeropadding
crypto-js/pad-nopadding