您的位置:首页 > 其它

简单的使用.NET非对称加密算法的例子

2007-04-25 12:31 393 查看
usingSystem;
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();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: