记一个前端 crypto-js AES 加密的问题

记一个前端 crypto-js aes 加解密的问题

通常来说前端往后端传输的敏感信息,如各类密码、卡号、二维码种种,都需要加密后传输,记录下本人项目中用到的 AES 前端加密方式。

推荐小伙伴们有空嘟嘟这篇文章AES加密算法的详细介绍与实现。

废话不多说,引入核心 crypto-js。


 

crypto-js最新版本支持MD5,SHA-1,SHA-256,AES,Rabbit,MARC4,HMAC,HMAC-MD5,HMAC-SHA1,HMAC-SHA256,PBKDF2。这边用我们比较熟悉常用的AES加密。

AES-128-CBC加密模式,注意key需要为16位,key和iv可以一样,另外采用Utf8会避免很多麻烦,本人就在 CryptoJS.enc.Utf8与CryptoJS.enc.Latin1中踩了坑,如果你的密文在后台解密中出了乱码,尝试换个编码方式试试看。

function encrypt(data) {

    var key  = CryptoJS.enc.Utf8.parse('3808268111733232');

    var iv  = CryptoJS.enc.Utf8.parse('9189345332093662');

    return CryptoJS.AES.encrypt(data, key, {iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding}).toString();

}

核心就这么多,非常的简单顺手。


timg.gif

这边为了方便记录直接写死了key和iv,实际项目中通过后台传输或者采用随机数生成key和iv会更加安全,同样后台需要同一组key和iv进行数据解密。

你可能感兴趣的:(记一个前端 crypto-js AES 加密的问题)