Node.js的公用/专用密钥对不起作用?

时间:2019-12-18 22:13:23

标签: javascript node.js rsa

我正在使用一个名为“ 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上给出的密钥对示例可以很好地工作。

任何人都可以帮助我找到原因吗?

0 个答案:

没有答案