1. RSA加密与解密 -- 使用公钥加密、私钥解密
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
public class RSATool { public string Encrypt( string strText, string strPublicKey) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(strPublicKey); byte [] byteText = Encoding.UTF8.GetBytes(strText); byte [] byteEntry = rsa.Encrypt(byteText, false ); return Convert.ToBase64String(byteEntry); } public string Decrypt( string strEntryText, string strPrivateKey) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(strPrivateKey); byte [] byteEntry = Convert.FromBase64String(strEntryText); byte [] byteText = rsa.Decrypt(byteEntry, false ); return Encoding.UTF8.GetString(byteText); } public Dictionary< string , string > GetKey() { Dictionary< string , string > dictKey = new Dictionary< string , string >(); RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); dictKey.Add( "PublicKey" , rsa.ToXmlString( false )); dictKey.Add( "PrivateKey" , rsa.ToXmlString( true )); return dictKey; } } |
测试:
1
2
3
4
5
6
7
8
9
|
RSATool myRSA = new RSATool(); Dictionary< string , string > dictK = new Dictionary< string , string >(); dictK = myRSA.GetKey(); string strText = "123456" ; Console.WriteLine( "要加密的字符串是:{0}" , strText); string str1 = myRSA.Encrypt( "123456" , dictK[ "PublicKey" ]); Console.WriteLine( "加密后的字符串:{0}" , str1); string str2 = myRSA.Decrypt(str1, dictK[ "PrivateKey" ]); Console.WriteLine( "解密后的字符串:{0}" , str2); |
2. RSA加密与解密 -- 使用同一个密钥容器进行加密与解密
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
public class RSAToolX { public string Encrypt( string strText) { CspParameters CSApars = new CspParameters(); CSApars.KeyContainerName = "Test001" ; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(CSApars); byte [] byteText = Encoding.UTF8.GetBytes(strText); byte [] byteEntry = rsa.Encrypt(byteText, false ); return Convert.ToBase64String(byteEntry); } public string Decrypt( string strEntryText) { CspParameters CSApars = new CspParameters(); CSApars.KeyContainerName = "Test001" ; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(CSApars); byte [] byteEntry = Convert.FromBase64String(strEntryText); byte [] byteText = rsa.Decrypt(byteEntry, false ); return Encoding.UTF8.GetString(byteText); } } |
测试 :
1
2
3
4
5
6
7
|
RSAToolX myRSA = new RSAToolX(); string strText = "123456" ; Console.WriteLine( "要加密的字符串是:{0}" , strText); string str1 = myRSA.Encrypt( "123456" ); Console.WriteLine( "加密后的字符串:{0}" , str1); string str2 = myRSA.Decrypt(str1); Console.WriteLine( "解密后的字符串:{0}" , str2); |
总结
以上所述是小编给大家介绍的C#中RSA加密与解密的实例详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
原文链接:https://www.cnblogs.com/ChengWenHao/archive/2019/08/22/CSharpRSA.html