您的位置:首页 > 编程语言 > C#

简单的C#中的RSA的用法

2008-02-26 10:51 447 查看

using System;


using System.IO;


using System.Text;


using System.Security.Cryptography;






/**//// <summary>


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


/// 本例的程序很简单,仅用于说明如何在.NET里面使用非对称(RSA)算法。


/// Kwanhong 2005.9


/// </summary>


class Class1




...{


public static void Main(string[] args)




...{


Class1 c=new Class1();


c.StartDemo();


}




public void StartDemo()




...{


//RSA的加解密过程:


// 有 rsa1 和 rsa2 两个RSA对象。


// 现在要 rsa2 发送一段信息给 rsa1, 则先由 rsa1 发送“公钥”给 rsa2


// rsa2 获取得公钥之后,用来加密要发送的数据内容。


// rsa1 获取加密后的内容后,用自己的私钥解密,得出原始的数据内容。




RSACryptoServiceProvider rsa1 = new RSACryptoServiceProvider();


RSACryptoServiceProvider rsa2 = new RSACryptoServiceProvider();




string publickey;


publickey=rsa1.ToXmlString(false); //导出 rsa1 的公钥


Console.WriteLine("公钥是: "+publickey);




string plaintext;


plaintext="01"; //原始数据


Console.WriteLine("原始数据是: {0} ",plaintext);




rsa2.FromXmlString(publickey); //rsa2 导入 rsa1 的公钥,用于加密信息




//rsa2开始加密


byte[] cipherbytes;


cipherbytes=rsa2.Encrypt(


Encoding.UTF8.GetBytes(plaintext),


false);






/**//*//////////////////////////////////////////////*/


Console.WriteLine("加密后的数据是:");


for(int i=0; i< cipherbytes.Length; i++)




...{


Console.Write("{0:X2} ",cipherbytes[i]);


}


Console.WriteLine(" ");




/**//*//////////////////////////////////////////////*/




//rsa1开始解密


byte[] plaintbytes;


plaintbytes = rsa1.Decrypt(cipherbytes,false);




Console.WriteLine("解密后的数据是:");


Console.WriteLine(Encoding.UTF8.GetString(plaintbytes));




Console.ReadLine();


}


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