RSA实现C# 加密详解

论坛 期权论坛 脚本     
匿名网站用户   2020-12-21 09:34   11   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.CryptographyCspParameterscpSend=

14. new CspParameters(); //Csp=CryptographyServiceProvider

15. CspParameterscpReceive= new CspParameters();

16. cpSend.KeyContainerName= "SendTestContainer" ;

17. cpReceive.KeyContainerName=

18. "ReceiveTestContainer" ;

19.

20. RSACryptoServiceProviderrsaSend=

21. new RSACryptoServiceProvider(cpSend);;

22. RSACryptoServiceProviderrsaReceive=

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 的应用有所帮助。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP