在线验证地址: www.seacha.com
-
- npm install crypto-js —save-dev
-
- javascrit 代码如下:
var CryptoJS = require("crypto-js")
var plaintText = "test123"
var key = CryptoJS.enc.Utf8.parse("123456789easemob");
// ECB加密
// var options={
// mode: CryptoJS.mode.ECB,
// padding: CryptoJS.pad.Pkcs7
// }
// CBC加密
var options = {
iv: CryptoJS.enc.Utf8.parse("0000000000000000"),
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}
// 加密
var encryptedData = CryptoJS.AES.encrypt(plaintText, key, options);
var encryptedBase64Str = encryptedData.toString();
console.log('encryptedBase64Str', encryptedBase64Str);
// 需要读取encryptedData上的ciphertext.toString()才能拿到跟Java一样的密文
// var encryptedStr = encryptedData.ciphertext.toString();
// console.log('encryptedStr', encryptedStr);
// 拿到字符串类型的密文需要先将其用Hex方法parse一下
// var encryptedHexStr = CryptoJS.enc.Hex.parse(encryptedStr);
// console.log('encryptedHexStr', encryptedHexStr);
// 将密文转为Base64的字符串
// 只有Base64类型的字符串密文才能对其进行解密
// var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encryptedHexStr);
// console.log('encryptedBase64Str', encryptedBase64Str);
// 解密
var decryptedData = CryptoJS.AES.decrypt(encryptedBase64Str, key, options);
// 解密后,需要按照Utf8的方式将明文转位字符串
var decryptedStr = decryptedData.toString(CryptoJS.enc.Utf8);
console.log('decryptedStr', decryptedStr);
// ECB: console log
// encryptedBase64Str 80UQrmB7JoyMhQnWSPLcWg==
// encryptedStr f34510ae607b268c8c8509d648f2dc5a
// encryptedHexStr WordArray.init {words: Array(4), sigBytes: 16}
// encryptedBase64Str 80UQrmB7JoyMhQnWSPLcWg== decryptedStr test123
// CBC: console log
// encryptedBase64Str tjMt+YHjc5RJ4y5K7O8uFw==
// encryptedStr b6332df981e3739449e32e4aecef2e17
// encryptedHexStr WordArray.init {words: Array(4), sigBytes: 16}
// encryptedBase64Str tjMt+YHjc5RJ4y5K7O8uFw==
// decryptedStr test123