aes-gcm - 无法解密 aes-192-gcm

标签 aes-gcm encryption

我正在使用nodejs来加密和解密aes-192-gcm

这是我的代码:

const encrypted = decrypt.encryptText('aes-192-gcm', 'FnpkKuIoqZL5B3tnE0Htmg==', '1z3FtB6OitmFOIsP', 'helloWorld', 'base64');
const de = decrypt.decryptText('aes-192-gcm', 'FnpkKuIoqZL5B3tnE0Htmg==', '1z3FtB6OitmFOIsP', encrypted, 'utf-8');
console.log(encrypted);
console.log(de);

使用的函数:

 function encryptText(cipher_alg, key, iv, text, encoding) {

        var cipher = crypto.createCipheriv(cipher_alg, key, iv);

        encoding = encoding || "binary";

        var result = cipher.update(text, "utf8", encoding);
        result += cipher.final(encoding);

        return result;
    }

    function decryptText(cipher_alg, key, iv, text, encoding) {

        const decipher = crypto.createDecipheriv(cipher_alg, key, iv);

        encoding = encoding || "binary";

        let result = decipher.update(text, encoding);
        result += decipher.final();

        return result;
    }

我收到的错误:

Unsupported state or unable to authenticate data

最佳答案

NodeJS 的加密模块使用 OpenSSL。此 API 具有 GCM/AEAD 密码的特殊参数。 API 中添加了使用它们的方法,例如 getAuthTagsetAuthTag 。如果没有后者,该方法总是抛出 GCM 模式解密异常。 (幸运的是)该标签被视为 NodeJS/OpenSSL 中密文的一部分。其他语言运行时(例如 Java)确实将其视为密文的一部分。

关于aes-gcm - 无法解密 aes-192-gcm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57298919/

相关文章:

ssl - 是否可以在 JDK 1.7 上将 GCM 与 BC 一起使用?

node.js - Nodejs AES-256-GCM 通过 webcrypto api 解密加密的客户端消息

java - AES-GCM:AEADBadTagException:GCM 中的 mac 检查失败

encryption - 为什么使用 JSON Web Tokens (JWT) 而不是普通加密

python - 旧的 python 散列从左到右完成——为什么不好?

c++ - 如何使用 C++ GPGME 导入 GPG key 和解密文件

javascript - 如何使用 AES-GCM 从 IE 11 加密操作的结果中解密数据

javascript - 使用 Java 的 AES-256-GCM 解密中的标签不匹配错误

encryption - 无服务器,在 aws 上加密主题

C# 指定的填充模式对此算法无效