前端JavaScript AES解密 AES加密 ECB模式

项目里使用过md5、base64,使用AES的安全系数会高一些。

高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法,微信小程序加密传输就是用这个加密算法的。由于h5项目需要从安卓app和ios拿到AES加密数据进行处理,所以根据安卓给的代码加上万能的百度快速得看了一下AES。

对称加密算法也就是加密和解密用相同的一些参数:

  • 密钥key
  • 偏移量十六进制iv
  • 编码Base64还是Hex
  • 模式mode 选择ECB还是CBC...
  • 填充Pkcs5P还是Pkcs7P...
  • 字符集是utf8还是gbk...

以上内容,不管是从后端拿文进行解码,还是后端从前端拿文解码,都需要保持以上参数一致。

第一次接触AES的人可能有点迷糊,盲目抄代码是没用的,要先了解AES究竟需要什么参数进行转换的。盲目到处搜索和抄代码只会浪费时间,不如去快速了解一下这个东西究竟是什么

可能以上的内容让你有点还是搞不懂,那么看看这个AES在线转码可能就能理解一些了。

SSL在线工具-AES在线加解密-AES encryption-SSLeye官网

这次我拿ECB模式、pks5、utf8、base64、密码为:~!@#$%^&*()_+123,进行加密,如图:

加密出来的密文是:FVRywVYCoT/SNpJRlhGypQ==

看看解密出来的是什么

引入crypto-js 

<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.js"></script>

js代码解密得出 hello

// 解密事件---
function decipherinHandler(word) {
    var key = CryptoJS.enc.Utf8.parse("~!@#$%^&*()_+123");//密码 utf8
    var decrypt = CryptoJS.AES.decrypt(word, key, {
        mode: CryptoJS.mode.ECB,//模式
        padding: CryptoJS.pad.Pkcs7
    });
    console.log('decipherin:',CryptoJS.enc.Utf8.stringify(decrypt).toString())
    return CryptoJS.enc.Utf8.stringify(decrypt).toString();
}
decipherinHandler('FVRywVYCoT/SNpJRlhGypQ==');//decipherin: hello

js代码字符串 hello 进行AES加密 得出:FVRywVYCoT/SNpJRlhGypQ==

// 加密事件
function encryptionHandler(word) {
    var key = CryptoJS.enc.Utf8.parse("~!@#$%^&*()_+123");
    var srcs = CryptoJS.enc.Utf8.parse(word);
    var encrypted = CryptoJS.AES.encrypt(srcs, key, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });
    console.log('encryption:',encrypted.toString());
    return encrypted.toString();
}
encryptionHandler('hello')//encryption:FVRywVYCoT/SNpJRlhGypQ==

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值