我正在使用一个名为“ jsencrypt”的库在我的项目中进行RSA加密,同时使用nodejs的默认加密库生成密钥对。我的代码如下:
importScripts("./jsencrypt.js")
function encryption() {
const { generateKeyPairSync } = require('crypto');
const { pubkey, privkey } = generateKeyPairSync('rsa', {
modulusLength: 4096,
publicKeyEncoding: {
type: 'spki',
format: 'pem'
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'pem',
cipher: 'aes-256-cbc',
passphrase: 'top secret'
}
});
var encrypt = new JSEncrypt();
encrypt.setPublicKey(pubkey);
var encrypted = encrypt.encrypt("test");
var decrypt = new JSEncrypt();
decrypt.setPrivateKey(privkey);
var uncrypted = decrypt.decrypt(encrypted);
if (uncrypted == "test") {
self.postMessage('works');
}
else {
self.postMessage('error');
}
}
self.onmessage = function(e) {
encryption()
};
(这是在webworker上运行的,因为我正在为该项目使用NW.js,该项目支持带有node.js模块的webworkers)
由于某种原因,这将返回“错误”(并且devtools上没有任何显示)。运行相同的功能,但是删除密钥生成并使用jsencrypt的github上给出的密钥对示例可以很好地工作。
任何人都可以帮助我找到原因吗?