asp.net 加密函数 .net rsa加密

2023-06-01

加密是我们实际应用中确保数据安全的重要手段。在使用ASP之前,MD5和SHA1算法可以用于数据加密。这两种算法虽然快速有效,但无法反向计算加密的密文,即解密。因此需要对数据进行解密的地方,这两种方法都不太适合。当然,您也可以自己编写适用的加密和解密程序,但这对编写者的数学水平有很高的要求,普通人很难做到。
现在,伴随着ASP.Net的推出,彻底改变了以前ASP下的编程模式。可以使用.Net 在Framework中,类提供加密服务,以确保数据安全。RSA算法是目前应用较为广泛的加密方法。在.Net 与RSA加密技术相关的Framework主要有两类:RSA RSACryptoServiceProvider类别 类。RSA按照MSDN的说法 类是“表示 RSA 所有算法的实现都是从中继承的基类”,而RSACryptoServiceProvider “使用加密服务提供程序” (CSP) 提供的 RSA 不对称加密和解密算法的实现。另外,“表示” RSA RSAParameters的算法标准参数 结构也很重要,它保存了RSA算法的参数。
因为有很多关于RSA算法原理的文章或者书籍,可以参考一下,这里就不重复了。让我们重点介绍一下如何在ASP中使用。.在Net中获得RSA加密。
生成RSA参数:RSA参数类型就是上面提到的RSAParameters。 结构,查看MSDN就知道它包含了D。、DP、DQ、Exponent、InverseQ、Modulus、P、Q八字段。只需Exponent和Modulus2个值进行加密,就可以看作是公钥。所有字段都需要解密,可以看作是私钥。以下程序显示了如何生成RSA2参数:


RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
RSAParameters rsaParamsExcludePrivate=rsa.ExportParameters(false);
RSAParameters rsaParamsIncludePrivate=rsa.ExportParameters(true);

ExportParameterserserviceProvider类的RSACryptoServiceProvider类(bool)该方法用于导出RSA参数,true表示导出上述八个字段的“私钥”,false表示导出“公钥”。


使用RSA参数进行加密解密:在这一步中,需要将上述两个参数导入RSACryptoServiceProvider类对象,然后使用它进行数据加密。下面的代码显示,我们可以写一个函数来完成加密过程:


Public byte [ ] RSAEncrypt ( byte [ ] b)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(rsaParamsExcludePrivate); //导入公钥
byte [] EncryptedData=rsa.Encrypt(DataToEncrypt,false); 
return EncryptedData;
} 

只需将rsa解密即可.ImportParameters(rsaParamsExcludePrivate)换为rsa.ImportParameters(rsaParamsExcludePrivate),只需将Encrypt换成Decrypt即可。


RSA参数的存储和载入:RSA参数可以保存为XML格式,下面的代码反映了如何保存和载入(只列出关键部分)


储存:


RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
StreamWriter writer=new StreamWriter(@"d:\PublicAndPrivateKey.xml");
string PPKeyXml=rsa.ToXmlString(true);//存储私钥
writer.Write(PPKeyXml);
writer.Close();
writer=new StreamWriter(@"d:\PublicKey.xml");
string PKeyXml=rsa.ToXmlString(false);//存储公钥
writer.Write(PKeyXml);

writer.Close();


读取:


RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
StreamReader reader=new StreamReader(@"d:\PublicKey.xml");
string PKey=reader.ReadToEnd();
rsa.FromXmlString(PKey);
reader.Close();
StreamReader reader=new StreamReader(@"d:\PublicAndPrivateKey.xml");
string PPKey=reader.ReadToEnd();
reader.Close();

类似于ExportParameters方法的ToXmlString,false表示存储“公钥”,true表示存储“私钥”。


上面是ASP.在Net中获取RSA加密的主要方法。






本文为转载内容,我们尊重原作者对本文的作权。如有内容错误或侵权问题,欢迎原作者联系我们更正或删除内容。

本文仅代表作者观点,版权归原创者所有,如需转载请在文中注明来源及作者名字。

免责声明:本文系转载编辑文章,仅作分享之用。如分享内容、图片侵犯到您的版权或非授权发布,请及时与我们联系进行审核处理或删除,您可以发送材料至邮箱:service@tojoy.com