<script type="text/javascript"> // 首先准备一份明文和秘钥: var plaintText = '123456789'; // 明文 var keyStr = '666666666'; // 一般key为一个字符串 // 参看官网文档,AES方法是支持AES-128、AES-192和AES-256的,加密过程中使用哪种加密方式取决于传入key的类型,否则就会按照AES-256的方式加密。 // 由于Java就是按照128bit给的,但是由于是一个字符串,需要先在前端将其转为128bit的才行。 // 字符串类型的key用之前需要用uft8先parse一下才能用 var key = CryptoJS.enc.Utf8.parse(keyStr); // 加密 var encryptedData = CryptoJS.AES.encrypt(plaintText, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); // 由于CryptoJS生成的密文是一个对象,如果直接将其转为字符串是一个Base64编码过的,在encryptedData.ciphertext上的属性转为字符串才是后端需要的格式。 var encryptedBase64Str = encryptedData.toString(); // 输出: console.log(encryptedBase64Str); // 需要读取encryptedData上的ciphertext.toString()才能拿到跟Java一样的密文 var encryptedStr = encryptedData.ciphertext.toString(); // 输出: console.log(encryptedStr); // 由于加密后的密文为128位的字符串,那么解密时,需要将其转为Base64编码的格式。 // 拿到字符串类型的密文需要先将其用Hex方法parse一下 var encryptedHexStr = CryptoJS.enc.Hex.parse(encryptedStr); // 将密文转为Base64的字符串 var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encryptedHexStr); // 使用转为Base64编码后的字符串即可传入CryptoJS.AES.decrypt方法中进行解密操作。 // 解密 var decryptedData = CryptoJS.AES.decrypt(encryptedBase64Str, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); // 解密后,需要按照Utf8的方式将明文转位字符串 var decryptedStr = decryptedData.toString(CryptoJS.enc.Utf8); console.log(decryptedStr); </script>
js 使用AES 加密解密
最新推荐文章于 2024-07-02 11:14:05 发布