usingSystem.IO;
usingSystem.Text;
usingSystem.Security.Cryptography;
///<summary>
///一个简单的使用.NET非对称加密算法的例子
///本例的程序很简单,仅用于说明如何在.NET里面使用非对称(RSA)算法。
///Kwanhong2005.9
///</summary>
classClass1
{
publicstaticvoidMain(string[]args)
{
Class1c=newClass1();
c.StartDemo();
}
publicvoidStartDemo()
{
//RSA的加解密过程:
//有rsa1和rsa2两个RSA对象。
//现在要rsa2发送一段信息给rsa1,则先由rsa1发送“公钥”给rsa2
//rsa2获取得公钥之后,用来加密要发送的数据内容。
//rsa1获取加密后的内容后,用自己的私钥解密,得出原始的数据内容。
RSACryptoServiceProviderrsa1=newRSACryptoServiceProvider();
RSACryptoServiceProviderrsa2=newRSACryptoServiceProvider();
stringpublickey;
publickey=rsa1.ToXmlString(false);//导出rsa1的公钥
stringplaintext;
plaintext="你好吗?这是用于测试的字符串。";//原始数据
Console.WriteLine("原始数据是:/n{0}/n",plaintext);
rsa2.FromXmlString(publickey);//rsa2导入rsa1的公钥,用于加密信息
//rsa2开始加密
byte[]cipherbytes;
cipherbytes=rsa2.Encrypt(
Encoding.UTF8.GetBytes(plaintext),
false);
/*//*/
Console.WriteLine("加密后的数据是:");
for(inti=0;i<cipherbytes.Length;i++)
{
Console.Write("{0:X2}",cipherbytes[i]);
}
Console.WriteLine("/n");
/*//*/
//rsa1开始解密
byte[]plaintbytes;
plaintbytes=rsa1.Decrypt(cipherbytes,false);
Console.WriteLine("解密后的数据是:");
Console.WriteLine(Encoding.UTF8.GetString(plaintbytes));
Console.ReadLine();
}
}