node.js - 获取 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
}
}
解决方案
推荐阅读
- microservices - 微服务 - 获取初始状态
- python - 将嵌套循环转换为更好的格式
- kotlin - 如何在 kotlin 上编写没有 java.util.stream 库的 java 代码?
- php - PHP的JSON结果没有显示我的期望
- excel - 将日期添加到日期,除非星期五 vba
- flutter - Flutter如何滚动到SliverList中的特定项目位置?
- javascript - 如何通过 Vue 中的 readfile 从 JSON 文件中获取数据?
- flask - SQLAlchemy 无法设置未映射的属性
- zurb-foundation - 从基础 5.5.3 迁移到 6.6.1
- asp.net-core - DbContextOptionsBuilder'不包含'usesqlserver'的定义,并且在asp.net core 2.2中没有扩展方法'usesqlserver'?