解密RSA数据时出现DOMException

时间:2018-06-05 12:29:22

标签: javascript node.js cryptography rsa webcryptoapi

我尝试将加密数据从服务器发送到客户端并使用window.crypto.subtle.decrypt()对其进行解密。但我没有描述就得到了错误。我该如何解决?

node.js服务器代码:



const sharedKey = (req, res, next) => {
  let crypto = require('crypto');

  let buf = Buffer.from('Hello, my friend');

  const key = {
    key: req.body.public,
    padding: crypto.constants.RSA_PKCS1_OAEP_PADDING
  }

  try {
    let encrypted = crypto.publicEncrypt(key, buf);
    res.send(encrypted.toString('base64'));
  } catch (err) {
    console.log('err', err)
  }
};




客户代码:



$.post('/register', {
  'login': login,
  'public': publicKeyPEM
}, function(data) {
  console.log('data', data);
  data = Ocrypto.base64ToArrayBuffer(data);
  try {
    window.crypto.subtle.decrypt({
          name: "RSA-OAEP",
          //label: Uint8Array([...]) //optional
        },
        keyPair.privateKey, //from generateKey or importKey above
        data //ArrayBuffer of the data
      )
      .then(function(decrypted) {
        //returns an ArrayBuffer containing the decrypted data
        console.log(new Uint8Array(decrypted));
      })
      .catch(function(err) {
        console.log("ERRRRRR", err);
      });
  } catch (error) {
    console.log('err', err)

  }
});




我在控制台中得到的东西:" ERRRRRR DOMException"

2 个答案:

答案 0 :(得分:0)

data = Ocrypto.base64ToArrayBuffer(data);

好像你有错字。

答案 1 :(得分:0)

我不知道如何解决这个问题,但我找到了另一种方法来完成mu项目的工作。 我在服务器上使用node-rsa,在browserify

构建后在客户端上使用{{3}}