前端使用CryptoJS v3.1.2进行AES加密

在项目中引用的依赖cipher-core.js,core-min.js,pad-zeropadding.js,aes.js
下载地址:https://github.com/brix/crypto-js/tree/develop/src
前端的AES加密

const key = CryptoJS.enc.Utf8.parse("1234567890000000");//密钥,前后端需要保持一致
const iv = CryptoJS.enc.Utf8.parse("1234567890000000");//一般是8位/16/32
function Encrypt(o) {
        if (typeof (o) === "string") {
            if (o) {
                var srcs = CryptoJS.enc.Utf8.parse(o);
                return CryptoJS.AES.encrypt(srcs, key, {
                    keySize: 128 / 8,
                    iv: iv,
                    mode: CryptoJS.mode.CBC,
                    // padding: CryptoJS.pad.Pkcs7
                    padding: CryptoJS.pad.ZeroPadding
                }).toString();//返回的是base64格式的密文
            }
        }
        else if (typeof (o) === "object") {
            for (var _o in o) {
                if (o[_o]) {
                    var srcs = CryptoJS.enc.Utf8.parse(o[_o]);
                    o[_o] = CryptoJS.AES.encrypt(srcs, key, {
                        keySize: 128 / 8,
                        iv: iv,
                        mode: CryptoJS.mode.CBC,
                        // padding: CryptoJS.pad.Pkcs7
                        padding: CryptoJS.pad.ZeroPadding
                    }).toString();
                }
            };
             // 或者   这种方式暂时没有尝试
        	// data = JSON.stringify(o);
        	// var srcs = CryptoJS.enc.Utf8.parse(data);
       		// return CryptoJS.AES.encrypt(srcs, key, {
        	//     keySize: 128 / 8,
       		//     iv: iv,
       		//     mode: CryptoJS.mode.CBC,
       	   //     // padding: CryptoJS.pad.Pkcs7
           //     padding: CryptoJS.pad.ZeroPadding
          // }).toString();
        }
        return o;
}
//使用
Encrypt("admin");//拿到的是base64编码
Encrypt("123456");

猜你喜欢

转载自blog.csdn.net/weixin_44202904/article/details/121887626