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

RSA实现C# 加密详解

2011-01-22 18:12 531 查看
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
的应用有所帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: