RSA实现C# 加密详解
2011-01-22 18:12 mleader1 阅读(489) 评论(0) 编辑 收藏 举报RSA 实现 C# 加密首先我们来了解下什么是 RSA ,它属于不对称加密,其原理就是使用一个公钥一个私钥,公钥可以公开用以加密,私钥严格保密用于解密,那么这样大家知道了 RSA 适合于数据量不大的加密,比如加密对称加密的密钥。
RSA 实现 C# 加密的过程实例:
RSACryptoServiceProvider 的名称空间是:
1. System.Security.
2. CryptographyRSACryptoServiceProvider
3. rsaSend = new RSACryptoServiceProvider();
4.
5. string plaintext = " 明文 " ; // 明文
6.
7. byte [] ciphertext = rsaSend.Encrypt(
8. System.Text.Encoding.UTF8.GetBytes(plaintext), false );
9. // 加密后
10.
11. lbl.Text = Convert.ToBase64String(ciphertext);
12. // 显示加密后的,为了显示不可见字符,使用的是 Base64 编码。
使用 RSACryptoServiceProvider() 创建 RSACryptoServiceProvider 实例时,自动产生密钥。
RSA 实际应用中是:接收方产生公钥和私钥,发送方用其公钥加密,再把加密后的内容发送给接收方。
CspParameters 的名称空间是:
13. System.Security.CryptographyCspParameters cpSend =
14. new CspParameters(); //Csp = Cryptography Service Provider
15. CspParameters cpReceive = new CspParameters();
16. cpSend.KeyContainerName = "SendTestContainer" ;
17. cpReceive.KeyContainerName =
18. "ReceiveTestContainer" ;
19.
20. RSACryptoServiceProvider rsaSend =
21. new RSACryptoServiceProvider(cpSend); ;
22. RSACryptoServiceProvider rsaReceive =
23. new RSACryptoServiceProvider(cpReceive);
24.
25. rsaSend.FromXmlString(rsaReceive.ToXmlString( false ));
26. // 发送方使用接收方给它的公钥进行加密
27.
28. string plaintext =
29. " 前几天我碰到一个朋友,约我跟马贼打架,
30. 我立马答应了他,因为我觉得这件事好无聊。 ";
31. byte [] ciphertext =
32. rsaSend.Encrypt(System.Text.Encoding.UTF8.GetBytes(
33. plaintext), false ); // 加密后
34. byte [] decryption =
35. rsaReceive.Decrypt(ciphertext, false ); // 解密后
36.
37. lbl.Width = 760;
38. lbl.Text = "" ;
39. lbl.Text +=
40. Convert.ToBase64String(ciphertext) + " ﹤ br / ﹥ " ;
41. // 显示加密后的
42. lbl.Text +=
43. System.Text.Encoding.UTF8.GetString(decryption) + " ﹤ br / ﹥ " ;
44. // 显示解密后的
45. lbl.Text +=
46. Server.HtmlEncode(rsaSend.ToXmlString( false )) + " ﹤ br / ﹥ " ;
47. // 显示发送方公钥
48. lbl.Text +=
49. Server.HtmlEncode(rsaReceive.ToXmlString( true )) + " ﹤ br / ﹥ " ;
50. // 显示接收方公钥和私钥
51. lbl.Text +=
52. Server.HtmlEncode(rsaReceive.ToXmlString( false )) + " ﹤ br / ﹥ " ;
53. // 显示接收方公钥
54.
55. rsaSend.PersistKeyInCsp = true ; // 密钥要保存起来
56. //rsaSend.Clear();
57. rsaReceive.PersistKeyInCsp = true ;
58. //rsaReceive.Clear();
在上面的代码中,我们使用 CspParameters 将密钥保存起来, ToXmlString 和 FromXmlString 将接收方的公钥告诉给发送方。
RSA 实现 C# 加密的实际操作就向你介绍到这里,希望对你了解和学习 C# 加密以及 RSA 的应用有所帮助。