CryptoJS 比较容易使用,不过AES的用法有点奇怪。
Node.js环境安装CryptoJS的方法:
npm install --save crypto-js
Hash、AES、Base64和HEX功能演示
let cryptoJS = require('crypto-js')
let msg = 'CryptoJS demo by 杨高峰'
// Hash
let msgSHA1 = cryptoJS.SHA1(msg)
console.log(msgSHA1) // WordArray object
let msgSHA1Hex = msgSHA1.toString() // 默认CryptoJS.enc.Hex,即十六进制
console.log(msgSHA1Hex)
console.log(msgSHA1.toString(cryptoJS.enc.Base64))
console.log(cryptoJS.MD5(msg).toString())
console.log(cryptoJS.SHA256(msg).toString())
// Base64, HEX
let wordArray = cryptoJS.enc.Utf8.parse(msg)
let msgBase64 = wordArray.toString(cryptoJS.enc.Base64)
console.log(msgBase64)
worldArray = cryptoJS.enc.Base64.parse(msgBase64)
msg = wordArray.toString(cryptoJS.enc.Utf8)
console.log(msg)
let msgHex = worldArray.toString()
console.log(msgHex)
worldArray = cryptoJS.enc.Hex.parse(msgHex)
msg = worldArray.toString(cryptoJS.enc.Utf8)
console.log(msg)
// AES
let key = cryptoJS.enc.Hex.parse('54f2ce052a7c125f2816e06ebc463d45cd27f371b25d6c39c3cf07e6998d6aa4')
let iv = cryptoJS.enc.Hex.parse('63c299b53161d7175c182b1c67b14ac0a90a28db552098844ab88127a3c8c1c3')
let aesOption = {
iv: iv,
mode: cryptoJS.mode.CBC,
padding: cryptoJS.pad.Pkcs7
}
let msgAES256CBC = cryptoJS.AES.encrypt(msg, key, aesOption)
let msgAES256CBCHex = cryptoJS.enc.Hex.stringify(msgAES256CBC.ciphertext)
let originMsg = cryptoJS.AES.decrypt({ ciphertext: cryptoJS.enc.Hex.parse(msgAES256CBCHex) }, key, aesOption)
.toString(cryptoJS.enc.Utf8)
console.log(originMsg)