javascript实现AES加密解密(ECB&CBC)

在线验证地址: www.seacha.com

    1. npm install crypto-js —save-dev
    1. 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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值