搞定加密解密
开发中需要一个加密解密的双向过程
MD5等Hash类型的单向加密不能符合使用的要求
所以自己写了一个类,当然还是调用 System.Security.Cryptography的方法
DESCryptoServiceProvider
加密过程
通过GetKey()、GetIV()方法产生和密钥key、随机变量IV
解密过程
用key、IV作为参数 通过SetKey()、SetIV()给Sercurity类的Key和IV负值
key、IV都是byte[]
遇到的问题:string-〉byte[]的转化
解决: Convert.FromBase64String(string s) 返回byte[]
最后编译成dll,方便重用
MD5等Hash类型的单向加密不能符合使用的要求
所以自己写了一个类,当然还是调用 System.Security.Cryptography的方法
DESCryptoServiceProvider
加密过程
通过GetKey()、GetIV()方法产生和密钥key、随机变量IV
解密过程
用key、IV作为参数 通过SetKey()、SetIV()给Sercurity类的Key和IV负值
key、IV都是byte[]
遇到的问题:string-〉byte[]的转化
解决: Convert.FromBase64String(string s) 返回byte[]
1
using System;
2
using System.IO;
3
using System.Text;
4
using System.Security.Cryptography;
5![](/Images/OutliningIndicators/None.gif)
6
namespace mySecurity
7
{
8
/// <summary>
9
/// MySecurity 的摘要说明。
10
/// </summary>
11
public class Security
12
{
13
private SymmetricAlgorithm mCSP = new DESCryptoServiceProvider();
14
15
//private SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();
16
17
/// <summary>
18
/// 加密
19
/// </summary>
20
/// <param name="Value"></param>
21
/// <returns></returns>
22
public string EncryptString(string Value)
23
{
24
ICryptoTransform ct;
25
MemoryStream ms;
26
CryptoStream cs;
27
byte[] byt;
28![](/Images/OutliningIndicators/InBlock.gif)
29
ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);
30![](/Images/OutliningIndicators/InBlock.gif)
31
byt = Encoding.UTF8.GetBytes(Value);
32![](/Images/OutliningIndicators/InBlock.gif)
33
ms = new MemoryStream();
34
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
35
cs.Write(byt, 0, byt.Length);
36
cs.FlushFinalBlock();
37
38
cs.Close();
39![](/Images/OutliningIndicators/InBlock.gif)
40
return Convert.ToBase64String(ms.ToArray());
41
}
42![](/Images/OutliningIndicators/InBlock.gif)
43
/// <summary>
44
/// 解密
45
/// </summary>
46
/// <param name="Value"></param>
47
/// <returns></returns>
48
public string DecryptString(string Value)
49
{
50
ICryptoTransform ct;
51
MemoryStream ms;
52
CryptoStream cs;
53
byte[] byt;
54![](/Images/OutliningIndicators/InBlock.gif)
55
ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);
56![](/Images/OutliningIndicators/InBlock.gif)
57
byt = Convert.FromBase64String(Value);
58![](/Images/OutliningIndicators/InBlock.gif)
59
ms = new MemoryStream();
60
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
61
cs.Write(byt, 0, byt.Length);
62
cs.FlushFinalBlock();
63![](/Images/OutliningIndicators/InBlock.gif)
64
cs.Close();
65![](/Images/OutliningIndicators/InBlock.gif)
66
return Encoding.UTF8.GetString(ms.ToArray());
67
}
68
69
70
public Security(){}
71![](/Images/OutliningIndicators/InBlock.gif)
72
#region 设置、获取Key、IV
73
/// <summary>
74
/// 获取产生的Key值,加密过程之前需调用该方法
75
/// </summary>
76
/// <returns></returns>
77
public string GetKey()
78
{
79
mCSP.GenerateKey();
80
return Convert.ToBase64String(mCSP.Key);
81
}
82![](/Images/OutliningIndicators/InBlock.gif)
83
/// <summary>
84
/// 获取产生的随机变量值,加密过程之前需调用该方法
85
/// </summary>
86
/// <returns></returns>
87
public string GetIV()
88
{
89
mCSP.GenerateIV();
90
return Convert.ToBase64String(mCSP.IV);
91
}
92![](/Images/OutliningIndicators/InBlock.gif)
93
/// <summary>
94
/// 设置Key的值,解密过程之前需要调用
95
/// </summary>
96
/// <param name="key"></param>
97
/// <returns></returns>
98
public string SetKey(string key)
99
{
100
mCSP.Key = Convert.FromBase64String(key);
101
return Convert.ToBase64String(mCSP.Key);
102
}
103
/// <summary>
104
/// 设置随机变量IV的值,解密过程之前需要调用
105
/// </summary>
106
/// <param name="IV"></param>
107
/// <returns></returns>
108
public string SetIV(string IV)
109
{
110
mCSP.IV = Convert.FromBase64String(IV);
111
return Convert.ToBase64String(mCSP.IV);
112
}
113
#endregion
114![](/Images/OutliningIndicators/InBlock.gif)
115![](/Images/OutliningIndicators/InBlock.gif)
116
}
117
}
118![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
8
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/InBlock.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/InBlock.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/InBlock.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/InBlock.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/InBlock.gif)
63
![](/Images/OutliningIndicators/InBlock.gif)
64
![](/Images/OutliningIndicators/InBlock.gif)
65
![](/Images/OutliningIndicators/InBlock.gif)
66
![](/Images/OutliningIndicators/InBlock.gif)
67
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
68
![](/Images/OutliningIndicators/InBlock.gif)
69
![](/Images/OutliningIndicators/InBlock.gif)
70
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
71
![](/Images/OutliningIndicators/InBlock.gif)
72
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
73
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
74
![](/Images/OutliningIndicators/InBlock.gif)
75
![](/Images/OutliningIndicators/InBlock.gif)
76
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
77
![](/Images/OutliningIndicators/InBlock.gif)
78
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
79
![](/Images/OutliningIndicators/InBlock.gif)
80
![](/Images/OutliningIndicators/InBlock.gif)
81
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
82
![](/Images/OutliningIndicators/InBlock.gif)
83
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
84
![](/Images/OutliningIndicators/InBlock.gif)
85
![](/Images/OutliningIndicators/InBlock.gif)
86
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
87
![](/Images/OutliningIndicators/InBlock.gif)
88
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
89
![](/Images/OutliningIndicators/InBlock.gif)
90
![](/Images/OutliningIndicators/InBlock.gif)
91
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
92
![](/Images/OutliningIndicators/InBlock.gif)
93
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
94
![](/Images/OutliningIndicators/InBlock.gif)
95
![](/Images/OutliningIndicators/InBlock.gif)
96
![](/Images/OutliningIndicators/InBlock.gif)
97
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
98
![](/Images/OutliningIndicators/InBlock.gif)
99
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
100
![](/Images/OutliningIndicators/InBlock.gif)
101
![](/Images/OutliningIndicators/InBlock.gif)
102
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
103
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
104
![](/Images/OutliningIndicators/InBlock.gif)
105
![](/Images/OutliningIndicators/InBlock.gif)
106
![](/Images/OutliningIndicators/InBlock.gif)
107
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
108
![](/Images/OutliningIndicators/InBlock.gif)
109
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
110
![](/Images/OutliningIndicators/InBlock.gif)
111
![](/Images/OutliningIndicators/InBlock.gif)
112
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
113
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
114
![](/Images/OutliningIndicators/InBlock.gif)
115
![](/Images/OutliningIndicators/InBlock.gif)
116
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
117
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
118
![](/Images/OutliningIndicators/None.gif)
最后编译成dll,方便重用