简体   繁体   English

使用RSA公钥加密字符串

[英]Using RSA public key to encrypt a string

I've been working on my expressjs project, but now I've run into a dead end. 我一直在从事expressjs项目,但是现在我陷入了困境。 I need to encrypt a string with a specific modulus and exponent. 我需要使用特定的模数和指数来加密字符串。 I should probably mention that I really don't know much about cryptography. 我可能应该提到,我真的对密码学并不了解。

So for example I have these: 例如,我有这些:

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

And if I've understood correctly I now need to create a public key with this? 如果我正确理解了,我现在需要以此创建一个公钥吗? I looked up lots of nodejs modules for rsa encryption, but they all seem to require the key to be in PEM format. 我查找了许多用于rsa加密的nodejs模块,但它们似乎都要求密钥为PEM格式。 So I found this thread and used it like this: 所以我找到了这个线程并像这样使用它:

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

Which gave me this: 这给了我这个:

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

Which I then tried to use with the ursa library 然后我尝试与ursa库一起使用

var key = ursa.createPublicKey(pem);

But it says that its not a public key. 但是它说它不是公钥。 I also tried to use it with node-rsa but got pretty much the same error :/ 我也尝试将其与node-rsa一起使用,但得到了几乎相同的错误:/

Any ideas what I did wrong here or alternative methods? 有任何想法我在这里做错了什么或其他方法吗?

Thanks, really appreciate it! 谢谢,非常感谢!

The PEM format is a Base64-encoded version of the DER format. PEM格式是DER格式的Base64编码版本。 You can use OpenSSL to help you build up DER, and then output PEM. 您可以使用OpenSSL帮助您建立DER,然后输出PEM。 I gave this answer to another question, which has some Ruby code that outputs a PEM-formatted file, given just the modulus and exponent. 我给出了另一个问题的答案 ,其中有一些Ruby代码,仅给出模数和指数,即可输出PEM格式的文​​件。 This should lead you to a solution. 这将引导您找到解决方案。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM