AES解密

            /**
             * AES解密 
             * @param {String} originalCiphertext 原始密文
             * @param {String} originalKey 原始秘钥
             */
            aesDecrypt(originalCiphertext,originalKey) {
                                // 使用 crypto-js
                //解密 1.使用 SHA-256 生成哈希后的密钥, 2.密文、iv 经过Base64加密,确保iv 16字节 3.解密模式CBC、Pkcs7填充
                
                const hashedKey = CryptoJS.SHA256(originalKey); // 使用 SHA-256 生成哈希后的密钥
                
                const ciphertextBase64 = CryptoJS.enc.Base64.parse(originalCiphertext) // 解析 Base64 编码的密文为 WordArray 对象
                
                const iv = CryptoJS.lib.WordArray.create(ciphertextBase64.words.slice(0, 4)) // 提取 IV(前 16 字节,即 4 个 Word,因为每个 Word 是 4 字节)
                
                const ciphertext =  CryptoJS.lib.WordArray.create(ciphertextBase64.words.slice(4)) // 提取实际的密文部分(从第 5 个 Word 开始)
                // 解密
                const decryptedBytes = CryptoJS.AES.decrypt({
                    ciphertext: ciphertext
                }, hashedKey, {
                    iv:iv,
                    mode: CryptoJS.mode.CBC,
                    padding: CryptoJS.pad.Pkcs7
                });
                
                const decryptedText = decryptedBytes.toString(CryptoJS.enc.Utf8);// 将解密后的数据转换为字符串

                console.log(decryptedText); // 打印解密后的文本

            },
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容