CryptoJS库使用
下载地址:
- GitHub地址:https://github.com/brix/crypto-js
- npm下载:
npm install crypto-js
使用其中的crypto-js.js
文件
解析数据
// 转为字节数组
var wordArray = CryptoJS.enc.Utf8.parse(utf8String);
var wordArray = CryptoJS.enc.Hex.parse(hexString);
var wordArray = CryptoJS.enc.Base64.parse(base64String);
var wordArray = CryptoJS.enc.Latin1.parse(latin1String);
// 字节数组转
var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);
var hexString = CryptoJS.enc.Hex.stringify(wordArray);
var base64String = CryptoJS.enc.Base64.stringify(wordArray);
var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);
CryptoJS.format.OpenSSL.parse(sslString);
CryptoJS.format.OpenSSL.stringify(wordArray);
MD
MD5
简单调用
var hash = CryptoJS.MD5(message);
var hash = CryptoJS.MD5(wordArray);
// MAC
var hmac = CryptoJS.HmacMD5(message, key);
复杂调用
function md5Example(data) {
var hasher = CryptoJS.algo.MD5.create();
hasher.reset(); // 清掉之前设置的明文数据
hasher.update(data); // 添加明文数据
var hash = hasher.finalize(); // 进行加密
return hash;
}
HmacMD5
function hmacmd5Example(data, key) {
var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.MD5, key);
hmacHasher.reset(); // 清掉之前设置的明文数据
hmacHasher.update(data); // 添加明文数据
var hmac = hmacHasher.finalize(); // 进行加密
return hmac;
}
SHA
SHA1
简单调用
var hash = CryptoJS.SHA1(message);
var hash = CryptoJS.SHA1(wordArray);
// MAC
var hmac = CryptoJS.HmacSHA1(message, key);
SHA224
简单调用
var hash = CryptoJS.SHA224(message);
var hash = CryptoJS.SHA224(wordArray);
// MAC
var hmac = CryptoJS.HmacSHA224(message, key);
SHA256
简单调用
var hash = CryptoJS.SHA256(message);
var hash = CryptoJS.SHA256(wordArray);
// MAC
var hmac = CryptoJS.HmacSHA256(message, key);
复杂调用
同md5,将MD5
类替换为SHA256
即可
SHA3
格式同上
SHA384
格式同上
SHA512
格式同上
DES
示例
function desenExample(data, key) {
var data = CryptoJS.enc.Utf8.parse(data);
var key = CryptoJS.enc.Utf8.parse(key);
var cfg = {
mode: CryptoJS.mode.ECB, // 加密模式
padding: CryptoJS.pad.Pkcs7 // 填充方式
};
var result = CryptoJS.DES.encrypt(data, // 待加密数据
key, // 加密密钥
cfg);
var restr = result.toString();
return restr;
}
desenExample("desExample","12345678");
DESede/TripleDES
将上述类名DES换为TripleDES即可
AES
function aesExample(data, key, iv) {
var key = CryptoJS.enc.Utf8.parse(key);
var iv = CryptoJS.enc.Utf8.parse(iv);
var cfg = {
iv: iv, // iv
mode: CryptoJS.mode.CBC, // 加密模式
padding: CryptoJS.pad.Pkcs7
} // 填充方式
// format: CryptoJS.format.Hex // 以十六进制输出(默认采用Base64方式)
var result = CryptoJS.AES.encrypt(data, // 待加密数据
key, // 加密密钥
cfg);
var restr = result.toString();
return restr;
}
RSA
密钥格式:
- PKCS#8:
-----BEGIN PRIVATE KEY-----
(JAVA格式) - PKCS#1:
-----BEGIN RSA PRIVATE KEY-----
(JAVA不支持)