CryptoJS 加解密,支持AES/DES等[100]
常见参数详解
mode:
CBC
CFB
ECB
OFB
CTR
CTRGladman
pad:
Pkcs7
AnsiX923
Iso10126
Iso97971
NoPadding
ZeroPadding
format:
OpenSSL
Hex
例子
AES加解密
let CryptoJS = require("slib/CryptoJS.min")
// 2.对称加密算法
// 2.1AES加密算法
let pwd = CryptoJS.enc.Utf8.parse("666666") // 解析明文
//秘钥和偏移向量推荐16位
let key = CryptoJS.enc.Utf8.parse("0199bec97dfa5e0d") // 解析秘钥
let iv = CryptoJS.enc.Utf8.parse("0199bec97dfa5e0d") // 解析偏移向量, CBC模式下用到, ECB模式不用
let ciphertext = CryptoJS.AES.encrypt(pwd, key, {
mode: CryptoJS.mode.CBC, // 加密模式
padding: CryptoJS.pad.Pkcs7, // 填充方式
iv: iv // 偏移向量
}).toString()
logd(ciphertext)
// ciphertext结果为:5oLCyb2ANU46N/bJNdmInQ==, base64的形式
// 2.2 AES解密算法, 必须为base64格式才能解密,如果为16进制,需要先转为base64
key = CryptoJS.enc.Utf8.parse("0199bec97dfa5e0d") // 解析秘钥
iv = CryptoJS.enc.Utf8.parse("0199bec97dfa5e0d") // 解析偏移向量, CBC模式下用到, ECB模式不用
let content = "j1lURgK3oLUaEqQTEqvgGgILUnDXhEhhUdEy+FtsQ6ePmRW9KRRjjb53y9msvuQiuRzj0B1PpE2VNReb/P/JlKnBPsIB+ZgwlPH9/UkTm08="
ciphertext = CryptoJS.AES.decrypt(content, key, {
mode: CryptoJS.mode.CBC, // 加密模式
padding: CryptoJS.pad.Pkcs7, // 填充方式
iv: iv // 偏移向量
}).toString(CryptoJS.enc.Utf8)
logd(ciphertext)
DES 加解密
let CryptoJS = require("slib/CryptoJS.min")
let message = CryptoJS.enc.Utf8.parse("123456")
let cfg = {
mode: CryptoJS.mode.ECB, // 使用ECB模式
padding: CryptoJS.pad.Pkcs7, // 使用Pkcs7填充
}
let key = CryptoJS.enc.Utf8.parse("abcd1234") // 解析秘钥
// DES, 3DES, RC4对称加密算法同理
let ciphertext = CryptoJS.DES.encrypt(message, key, cfg)
logd(ciphertext)
let plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg).toString(CryptoJS.enc.Utf8)
logd(plaintext)
TripleDES加解密
let CryptoJS = require("slib/CryptoJS.min")
//3DES
let message = CryptoJS.enc.Utf8.parse("123456")
let cfg = {
mode: CryptoJS.mode.ECB, // 使用ECB模式
padding: CryptoJS.pad.Pkcs7, // 使用Pkcs7填充
}
let key = CryptoJS.enc.Utf8.parse("abcd1234") // 解析秘钥
let ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg)
logd(ciphertext)
let plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg)
logd(plaintext)
RC4加解密
let CryptoJS = require("slib/CryptoJS.min")
let message = CryptoJS.enc.Utf8.parse("123456")
let cfg = {
mode: CryptoJS.mode.ECB, // 使用ECB模式
padding: CryptoJS.pad.Pkcs7, // 使用Pkcs7填充
}
let key = CryptoJS.enc.Utf8.parse("abcd1234") // 解析秘钥
let ciphertext = CryptoJS.RC4.encrypt(message, key, cfg)
logd(ciphertext)
let plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg)
logd(plaintext)
md5加密
let CryptoJS = require("slib/CryptoJS.min")
// 1.消息摘要算法
let wordArray = CryptoJS.enc.Utf8.parse("66666") // 字符串先转变为wordArray, 也可以不用转变,实际情况根据网站
let md5_str = CryptoJS.MD5(wordArray).toString() // 加上.toString()由对象变成字符串
logd(md5_str)
sha1加密
let CryptoJS = require("slib/CryptoJS.min")
// 1.消息摘要算法
let wordArray = CryptoJS.enc.Utf8.parse("66666") // 字符串先转变为wordArray, 也可以不用转变,实际情况根据网站
let sha1_str = CryptoJS.SHA1(wordArray).toString()
logd(sha1_str)
HmacSHA256
let CryptoJS = require("slib/CryptoJS.min")
// 定义消息和密钥
let message = "Message to be signed";
let secret = "Secret passphrase";
// 使用 HMAC-SHA256 算法签名消息
let hash = CryptoJS.HmacSHA256(message, secret);
// 将结果转换为十六进制字符串
let hashInHex = hash.toString(CryptoJS.enc.Hex);
// 输出哈希值
logd(hashInHex);
// 返回 ed52c08b7cb6722940aeda7f84866b3d83ca2ef1b889e80aef361d1cc2ff70ef