将 .net 公共 xml 密钥导入 RSA 中的 javascript [英] import .net public xml key to javascript in RSA
问题描述
我有在 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.
你必须做的:
从他们的 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屋!