CryptoJS简单使用

本文介绍了CryptoJS库的各种加密算法,包括MD5、SHA-1、SHA-256、AES等,并通过实例展示了如何在前端使用这些算法进行加密操作。同时,文章还解决了前后端加密不一致的问题。

CryptoJS(crypto.js)为JavaScript提供了各种各样的加密算法。目前已支持的算法包括: MD5SHA-1SHA-256AESRabbitMARC4HMACHMAC-MD5HMAC-SHA

具体下载地址:点击下载

主要是两个文件夹,components和rollups

第一个是组件,第二个是汇总。

在汇总文件夹中的文件是在组件一个或多个文件夹拼接后压缩的。

这使得汇总独立的文件夹在你的项目纳入项目文件,而无需担心它的依赖。


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CryptoJS</title>
    <script src="js/CryptoJS%20v3.1.2/components/core.js"></script>
    <script src="js/CryptoJS%20v3.1.2/components/md5.js"></script>
    <script src="js/CryptoJS%20v3.1.2/components/evpkdf.js"></script>
    <script src="js/CryptoJS%20v3.1.2/components/enc-base64.js"></script>
    <script src="js/CryptoJS%20v3.1.2/components/cipher-core.js"></script>
    <script src="js/CryptoJS%20v3.1.2/components/aes.js"></script>
    <script src="js/CryptoJS%20v3.1.2/components/hmac.js"></script>
    <script src="js/CryptoJS%20v3.1.2/components/sha1.js"></script>
    <script src="js/CryptoJS%20v3.1.2/components/sha256.js"></script>
</head>
<body>
<div id="content"></div>
    <script>
        var md5 = CryptoJS.MD5("Message").toString(CryptoJS.enc.Hex);
        console.log("md5 = %s", md5);

        var sHA1 = CryptoJS.SHA1("Message").toString(CryptoJS.enc.Hex);
        console.log("sHA1 = %s", sHA1);

        var sHA256 = CryptoJS.SHA256("Message").toString(CryptoJS.enc.Hex);
        console.log("sHA256 = %s", sHA256);

        var hmacMD5 = CryptoJS.HmacMD5("Message", "Secret Passphrase").toString(CryptoJS.enc.Hex);
        console.log("hmacMD5 = %s", hmacMD5);

        var hmacSHA1 = CryptoJS.HmacSHA1("Message", "Secret Passphrase").toString(CryptoJS.enc.Hex);
        console.log("hmacSHA1 = %s", hmacSHA1);

        var aesEncrypt = CryptoJS.AES.encrypt("Message", "Secret Passphrase");
        console.log("aesEncrypt = %s", aesEncrypt.iv.toString(CryptoJS.enc.Hex));

        var aesDecrypt = CryptoJS.AES.decrypt(aesEncrypt, "Secret Passphrase");
        console.log("aesDecrypt = %s", aesDecrypt.toString(CryptoJS.enc.Utf8));

        // base64 encrypt
        var rawStr = "hello world!";
        var wordArray = CryptoJS.enc.Utf8.parse(rawStr);
        var base64 = CryptoJS.enc.Base64.stringify(wordArray);
        console.log('base64Encrypt = ', base64);

        // base64 decrypt
        var parsedWordArray = CryptoJS.enc.Base64.parse(base64);
        var parsedStr = parsedWordArray.toString(CryptoJS.enc.Utf8);
        console.log('base64Decrypt = ',parsedStr);
    </script>
</body>
</html>

前端使用CryptoJS类库,进行AES加密提交到后台之后,后台解密失败,报错Given final block not properly padded经过一番搜索,终于有了解决方案!

由于后台java使用AES加密使用的是AES/EBC/PKCS5Padding进行初始化的,
1、首先var key = CryptoJS.enc.Utf8.parse(key);  
2、由于后端用的PKCS5Padding,而CryptoJS类库类库中没有,但有PKCS7Padding,跟PKCS5Padding是一样的,所以加密时加上红色部分的参数即可:
CryptoJS.AES.encrypt(text, key, {  
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
});


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一屁小肥咩

您的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值