首页 > 解决方案 > 获取 invalidCiphertextException:解密使用 kms 公钥加密的数据时为 null

问题描述

我正在构建一个基于非对称加密的 POC,其中来自 KMS 的公钥将被下载并在客户端用于加密敏感数据,一旦在服务器端接收到该数据,就需要使用 KMS 解密功能对其进行解密。使用 KMS 加密和解密工作正常,但是当我用下载的公钥加密然后用 KMS 解密时,我得到invalidCiphertextException: null

CMK 加密配置是 https://i.stack.imgur.com/0muAb.png

我用于加密的代码是

var encrypt_with_public_key = function (data) {
    let fs = require('fs'),
    path = require('path'),    
    absolutePath  = path.join(__dirname, 'Publickey.pem');   
    let publicKey = fs.readFileSync(absolutePath, "utf8");
    let encrypted = crypto.publicEncrypt({
        key: Buffer.from(publicKey),        
        oaepHash: "sha256",
    },Buffer.from(data)).toString("base64");
       
    
    return encrypted;
}

用于解密的代码是

var decrypt_data = function (data) {
    try {
        let params = {
            KeyId: kmsConfig["KeyId"], 
            EncryptionAlgorithm: kmsConfig["EncryptionAlgorithm"] /* RSAES_OAEP_SHA_256*/
        }
        params.CiphertextBlob = Buffer.from(data)        
        return kms.decrypt(params).promise().then(data => data.Plaintext);
        
    }
    catch (ex) {
        throw ex
    }
}

标签: node.jsencryptionpublic-key-encryptionencryption-asymmetricaws-kms

解决方案


推荐阅读