将 .net 公共 xml 密钥导入 RSA 中的 javascript [英] import .net public xml key to javascript in RSA

查看:52
本文介绍了将 .net 公共 xml 密钥导入 RSA 中的 javascript的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有在 C# 中创建的 XML 中的公钥格式为:

I have public key in XML that created in C# the format is:

<Modulus>rYDd94biRAJ1P6j68xjARl......and so on</Modulus>
<Exponent>A**B</Exponent>

我想在 Javascript 中创建这个密钥,并用它加密字符串,我该怎么做?

I want to create this key in Javascript, and encrypt string with it, how can I do it?

谢谢,

推荐答案

经过这么多小时的研究、测试、放弃、再次研究等,对于 .NET 和 Javascript 的 RSA 互操作性的解决方案,我找到了这个图书馆:

After so many hours researching, testing, giving up, researching again, etc., for a solution on RSA interoperability for .NET and Javascript, I have found this library:

http://www.jocys.com/Common/JsClasses/Documents/

它们的类与服务器上的 RSACryptoServiceProvider 具有相同的工作代码.

Their classes have the same working code as the RSACryptoServiceProvider on the server.

你必须做的:

  1. 从他们的 Github 下载源代码:https://github.com/JocysCom/JsClasses/archive/master.zip

将文件从 *.debug.js 重命名为 *.js.请参阅下面 (3) 上的文件列表.

Rename the files from *.debug.js to *.js. See the list of files below, on (3).

将所需文件添加到您的 html 页面

Add the required files to your html page

 <script type="text/javascript" src="js/System.js"></script>
 <script type="text/javascript" src="js/System.IO.js"></script>
 <script type="text/javascript" src="js/System.Text.js"></script>
 <script type="text/javascript" src="js/System.Convert.js"></script>
 <script type="text/javascript" src="js/System.BigInt.js"></script>
 <script type="text/javascript" src="js/System.BitConverter.js"></script>
 <script type="text/javascript" src="js/System.Security.Cryptography.js"></script>
 <script type="text/javascript" src="js/System.Security.Cryptography.SHA1.js"></script>
 <script type="text/javascript" src="js/System.Security.Cryptography.HMACSHA1.js"></script>
 <script type="text/javascript" src="js/System.Security.Cryptography.RSA.js"></script>

  • 添加此 javascript 代码以加密您的文本:

  • Add this javascript code to encrypt your text:

     function RsaEncrypt()
     {
         //a public key generated from their sample.
         //your should generate yours and stamp it here.
         var xmlParams =
         "<RSAKeyValue>" +
             "<Modulus>pxtmFnrGI6Sb8ziyY+NRUDuQ4b/ETw5WabQ4daFQqzsCEr/6J/LLBU/2D5mO5/Wu5U/Rya1E55aYFZeaZMNqAw==</Modulus>" +
             "<Exponent>AQAB</Exponent>" +
             "<P>2TsVXWPEvDIJv/gd2rX9k0UOyXuaYgoAchIH6vUicis=</P>" +
             "<Q>xO4+OYREQfqYRQK7y73+RaUG0IxobT0OQ0c+Ok2hc4k=</Q>" +
             "<DP>K7/xgpiIU9rECeyfnp/OjS14V+3T3vDivBaTj6eFI3c=</DP>" +
             "<DQ>K4N9ClZ4gp+tn6oP9t//XEIvtEsiE+kmyqTmUhmvMAk=</DQ>" +
             "<InverseQ>p7o4BOlKZQZ693R1ViZ66y5gTjUkNNTd2za7/1YGBCs=</InverseQ>" +
             "<D>XZqFVrYy4qhECruJgVZFp/GVuD5Y0gev88nVjl5r911QT+I8vgJSklTso7jTlpMtf2oe7UZ0WRWEtgPS3tZn4Q==</D>" +
         "</RSAKeyValue>";
         var rsa = new System.Security.Cryptography.RSACryptoServiceProvider();
         rsa.FromXmlString(xmlParams);
    
         // Encrypt
         var decryptedBytes = System.Text.Encoding.UTF8.GetBytes(text);
         var doOaepPadding = true;
         var encryptedBytes = rsa.Encrypt(decryptedBytes, doOaepPadding);
         var encryptedString = System.Convert.ToBase64String(encryptedBytes);
         return encryptedString;
     }
    

  • 查找有关如何生成私钥和公钥的文档(上面的链接).代码与您在服务器上手动编写 .NET 完全相同.

    Look for documentation (link above) on how to generate the private and public keys. The code is quite the same as you would manually write .NET on server.

    您还可以查看他们的测试页面

    这篇关于将 .net 公共 xml 密钥导入 RSA 中的 javascript的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆