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