我有一个用例,我想首先使用对称密钥加密我的数据,然后使用客户端的公钥加密对称密钥。我试图模仿这个场景,但是得到了无效的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)
加密前我是否必须转换对称密钥格式?如果有,那是什么?
答案 0 :(得分:1)
masterKey
是Buffer。您需要将其转换为字节,以便伪造可以使用它
尝试此功能(我没有测试过它......)
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));