【问题标题】:Using RSA public key to encrypt a string使用 RSA 公钥加密字符串
【发布时间】:2014-10-29 15:32:13
【问题描述】:

我一直在做我的 expressjs 项目,但现在我遇到了死胡同。我需要用特定的模数和指数加密一个字符串。我可能应该提一下,我真的不太了解密码学。

例如,我有这些:

var mod = "99F496606F25ABC3FB26D21D58B1B9D7714B016E870B57EB3220DD60B55796A2E6A3CE65C59CCAD42AE8DCBD475125BF031DA2A66DAE0C5CBF5E5C445B89FE13C879D519FC9603C337226D23E230C986D6E057214A309BF7B954C899FF920690A8558056D95E69F932CF1BDAA55E90D871040C614D7CDB496741E16B8728F6E5B3CE9A39D76F0BF1E5CF244DC4B88117B4F45A48C103CEE5CCEE3E227B0C1D6DDB24E9FC140A05A4C6E094CA0D9512379964B0C1000F9E94F7071BE7F0B04178FE6B60222FA4896D5D7F4AECE29D83AD1167A0AE023C1B9F29265B290E695913D83E965335364014BB227284A6D2A825CE4A3D839431546CA6BEA98691E53CE9";
var exponent = "010001";

如果我理解正确,我现在需要用它创建一个公钥吗?我查找了许多用于 rsa 加密的 nodejs 模块,但它们似乎都要求密钥为 PEM 格式。所以我找到了这个thread 并像这样使用它:

rsaPublicKeyPem(new Buffer(mod).toString('base64'), new Buffer(exponent).toString('base64'));

这给了我这个:

-----BEGIN RSA PUBLIC KEY-----
MIICDAKCAgA5OUY0OTY2MDZGMjVBQkMzRkIyNkQyMUQ1OEIxQjlENzcxNEIwMTZF
ODcwQjU3RUIzMjIwREQ2MEI1NTc5NkEyRTZBM0NFNjVDNTlDQ0FENDJBRThEQ0JE
NDc1MTI1QkYwMzFEQTJBNjZEQUUwQzVDQkY1RTVDNDQ1Qjg5RkUxM0M4NzlENTE5
RkM5NjAzQzMzNzIyNkQyM0UyMzBDOTg2RDZFMDU3MjE0QTMwOUJGN0I5NTRDODk5
RkY5MjA2OTBBODU1ODA1NkQ5NUU2OUY5MzJDRjFCREFBNTVFOTBEODcxMDQwQzYx
NEQ3Q0RCNDk2NzQxRTE2Qjg3MjhGNkU1QjNDRTlBMzlENzZGMEJGMUU1Q0YyNDRE
QzRCODgxMTdCNEY0NUE0OEMxMDNDRUU1Q0NFRTNFMjI3QjBDMUQ2RERCMjRFOUZD
nMTQwQTA1QTRDNkUwOTRDQTBEOTUxMjM3OTk2NEIwQzEwMDBGOUU5NEY3MDcxQkU3
RjBCMDQxNzhGRTZCNjAyMjJGQTQ4OTZENUQ3RjRBRUNFMjlEODNBRDExNjdBMEFF
MDIzQzFCOUYyOTI2NUIyOTBFNjk1OTEzRDgzRTk2NTMzNTM2NDAxNEJCMjI3Mjg0
QTZEMkE4MjVDRTRBM0Q4Mzk0MzE1NDZDQTZCRUE5ODY5MUU1M0NFOQIGMDEwMDAx
-----END RSA PUBLIC KEY-----

然后我尝试将其与 ursa library 一起使用

var key = ursa.createPublicKey(pem);

但它说它不是公钥。我也尝试将它与 node-rsa 一起使用,但得到了几乎相同的错误:/

任何想法我在这里做错了什么或替代方法?

谢谢,非常感谢!

【问题讨论】:

  • 请始终包含完整的错误消息,我认为它实际上并没有告诉你?

标签: javascript node.js encryption cryptography


【解决方案1】:

PEM 格式是 DER 格式的 Base64 编码版本。您可以使用 OpenSSL 帮助您构建 DER,然后输出 PEM。我给了this answer 另一个问题,它有一些输出 PEM 格式文件的 Ruby 代码,只给出模数和指数。这应该会引导您找到解决方案。

【讨论】:

    猜你喜欢
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 2021-02-21
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多