Node.js:尝试解密加密的对称 key 时出现无效的 RSAES-OAEP 填充

标签 node.js encryption aes rsa cryptojs

我有一个用例,我想首先使用对称 key 加密我的数据,然后使用客户端的公钥加密对称 key 。我尝试模拟该场景,但收到“无效的 RSAES-OAEP 填充”错误。

代码:

var forge = require('node-forge');
var _crypto = require('crypto');
var rsa = forge.pki.rsa;

var masterKey = _crypto.randomBytes(32);
var keypair = rsa.generateKeyPair(2048);
var encryptedVal = keypair.publicKey.encrypt(masterKey, 'RSA-OAEP');
var decryptedVal = keypair.privateKey.decrypt(encryptedVal, 'RSA-OAEP');
console.log(masterKey,decryptedVal)

加密之前是否必须转换对称 key 格式?如果是的话,做什么?

最佳答案

masterKeyBuffer 。您需要将其转换为字节,以便 forge 可以使用它

试试这个功能(我没有测试过...)

function toBytes(buf) {
    var byteString = '';
    for (var i = 0; i < buf.length; ++i) {
        byteString += String.fromCodePoint(buf[i]);
    }
    return byteString;
}

使用

var masterKey = toBytes(_crypto.randomBytes(32));

关于Node.js:尝试解密加密的对称 key 时出现无效的 RSAES-OAEP 填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49809074/

相关文章:

node.js - socket.io 发出数据将断开客户端

javascript - 无法加载资源:net::ERR_CONNECTION_RESET Node js 服务器

node.js - Nodejs 进程挂起,我该如何调试它或收集转储?

python - Python 2 中的简单替换密码

python - AES 解密不起作用

node.js - 如何为 graphicsmagick 配置 JPEG 委托(delegate)?

python - Unicode解码错误: 'utf-8' codec can't decode bytes in position 65534-65535: unexpected end of data

android - aes-256-cbc加密解密

encryption - 当加密不是 block 大小的偶数倍的数据时,我必须发送完整的最后一个 block 吗?

encryption - 使用弱密码,bcrypt或SHA-256 + AES-256加密文件?