【问题标题】:How to Encrypt Data in Javascript with RSA public key?如何使用 RSA 公钥加密 Javascript 中的数据?
【发布时间】:2019-12-09 08:32:07
【问题描述】:

服务器生成 RSA 公钥和私钥并将它们存储在会话中。通过服务器调用,客户端 html 页面接收公钥。现在我想使用它加密数据。我曾尝试使用 jsencrypt,但它无法识别我的服务器生成的公钥。设置公钥后调用加密时给出错误。我认为密钥是 2048 位。虽然不确定编码。如何使用此密钥加密数据?任何帮助表示赞赏。

Sample public key generated by server: 9995362445e0a98f4da3019f6f3eb960f938056972408675c0b3f642ad5943709f8e8031f00bba6ed24bad1e8e2b099cd154b5eb5b64b310d179b39abb4392442cdb8ad3fe8bc6e3088bd63089d405fb134c633de62b741e4c5bd615b90e096ec3bb16f71ef54825febc5662a96c093db986225825a1cc63d4dc19e2abbbfb1cb9d3a5e41f757ce3f82481a5caf92207ffe4c37e8acc43835dce49cf61a6b113384d333050b6ac59ef78a182bae114b08729e84cbad659eb8bace0481aa51a370daac09f97d779be245ce95af85a285d0ea170da732f9eef2e43a21f5586014ea00259ef09498356eaf2d4e492f0f8978ca167c3f690b35045a8dd1c7ccf4347

编辑:正如许多人所建议的,我尝试使用加密:

let crypto;
try {
  crypto = require('crypto');
} catch (err) {
  console.log('crypto support is disabled!');
}
var encryptStringWithRsaPublicKey = function(toEncrypt, publicKey) {
  var buffer = Buffer.from(toEncrypt,'utf8');
  var encrypted = crypto.publicEncrypt(publicKey, buffer);
  return encrypted.toString("base64");
};
console.log(encryptStringWithRsaPublicKey('MyText','9995362445e0a98f4da3019f6f3eb960f938056972408675c0b3f642ad5943709f8e8031f00bba6ed24bad1e8e2b099cd154b5eb5b64b310d179b39abb4392442cdb8ad3fe8bc6e3088bd63089d405fb134c633de62b741e4c5bd615b90e096ec3bb16f71ef54825febc5662a96c093db986225825a1cc63d4dc19e2abbbfb1cb9d3a5e41f757ce3f82481a5caf92207ffe4c37e8acc43835dce49cf61a6b113384d333050b6ac59ef78a182bae114b08729e84cbad659eb8bace0481aa51a370daac09f97d779be245ce95af85a285d0ea170da732f9eef2e43a21f5586014ea00259ef09498356eaf2d4e492f0f8978ca167c3f690b35045a8dd1c7ccf4347'));

它抛出以下错误:

Uncaught TypeError: Cannot read property '2' of null
    at push../node_modules/parse-asn1/fixProc.js.module.exports (fixProc.js:19)
    at parseKeys (index.js:27)
    at Object.publicEncrypt (publicEncrypt.js:30)
    at encryptStringWithRsaPublicKey (App.js:20)
    at Module.<anonymous> (App.js:23)
    at Module../src/App.js (App.js:727)
    at __webpack_require__ (bootstrap:781)
    at fn (bootstrap:149)
    at Module../src/index.js (index.css?f3f6:45)
    at __webpack_require__ (bootstrap:781)
    at fn (bootstrap:149)
    at Object.0 (test.css?2a93:45)
    at __webpack_require__ (bootstrap:781)
    at checkDeferredModules (bootstrap:45)
    at Array.webpackJsonpCallback [as push] (bootstrap:32)
    at main.chunk.js:1

【问题讨论】:

标签: javascript encryption rsa public-key-encryption cryptojs


【解决方案1】:

你应该添加-----BEGIN PUBLIC KEY----------END PUBLIC KEY-----

喜欢这个

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQE...
-----END PUBLIC KEY-----`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 2011-03-08
    • 2014-06-23
    • 2013-10-15
    相关资源
    最近更新 更多