RSACryptoServiceProvider类的ExportParameters(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();
ToXmlString和ExportParameters方法类似,false表示保存“公钥”,true表示保存“私钥”。