我有一个用例,我想首先使用对称 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 格式?如果是的话,做什么?
最佳答案
masterKey
是 Buffer 。您需要将其转换为字节,以便 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/