JavaScript

aes前端js加解密

在开发中,总有一些特殊数据需要包装一下子,很多的加密解密要么针对前端要么侧重于后端
场景:项目中需要对用户的一些些相关信息进行安全包装,接口请求,后台Java对返回的数据进行加密,前端解密。
问题:老项目了,引入的aes.js相关文件包,一直解密不出来。最后排查到是引入的文件包有问题,全部替换成cdn的地址即可
<script src="http://cdn.bootcss.com/crypto-js/3.1.2/components/core.js"></script>
<script src="http://cdn.bootcss.com/crypto-js/3.1.2/rollups/aes.js"></script>
<script src="http://cdn.bootcss.com/crypto-js/3.1.2/components/enc-base64.js"></script>
<script src="http://cdn.bootcss.com/crypto-js/3.1.2/components/mode-ecb-min.js"></script>
<script src="http://cdn.bootcss.com/crypto-js/3.1.2/components/cipher-core-min.js"></script>

// 密钥
var key = CryptoJS.enc.Utf8.parse("qwertyuio!@#$%^&");
// 加密
function encrypt(content) {
    var encryptResult = CryptoJS.AES.encrypt(content, key, {
        //iv: iv,
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });
    let hexResult=CryptoJS.enc.Base64.parse(encryptResult.toString());
    var abc = CryptoJS.enc.Hex.stringify(hexResult);
    return abc.toString();
}
// 解密
function decrypt(content) {
    let hexResult=CryptoJS.enc.Hex.parse(content);   // Base64解密

    let ciphertext=CryptoJS.enc.Base64.stringify(hexResult);     // Base64解密
    
    var options = {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    };
    // 解密
    var decryptedData = CryptoJS.AES.decrypt(ciphertext, key, options);
    // 解密后,需要按照Utf8的方式将明文转位字符串
    var decryptedStr = decryptedData.toString(CryptoJS.enc.Utf8);
    return decryptedStr ;
 }
    var name = encrypt($scope.userName); // 加密
    var bytes  = decrypt(name );
    var plaintext = bytes.toString(CryptoJS.enc.Utf8); // 解密
    console.log(plaintext) 

回复

This is just a placeholder img.