开发中需要一个加密解密的双向过程
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
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
29
ct
=
mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);
30
31
byt
=
Encoding.UTF8.GetBytes(Value);
32
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
40
return
Convert.ToBase64String(ms.ToArray());
41
}
42
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
55
ct
=
mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);
56
57
byt
=
Convert.FromBase64String(Value);
58
59
ms
=
new
MemoryStream();
60
cs
=
new
CryptoStream(ms, ct, CryptoStreamMode.Write);
61
cs.Write(byt,
0
, byt.Length);
62
cs.FlushFinalBlock();
63
64
cs.Close();
65
66
return
Encoding.UTF8.GetString(ms.ToArray());
67
}
68
69
70
public
Security()
{}
71
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
83
///
<summary>
84
///
获取产生的随机变量值,加密过程之前需调用该方法
85
///
</summary>
86
///
<returns></returns>
87
public
string
GetIV()
88
{
89
mCSP.GenerateIV();
90
return
Convert.ToBase64String(mCSP.IV);
91
}
92
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
115
116
}
117
}
本文介绍了一个基于DES算法的加密解密实现,通过生成并设置密钥Key和初始化向量IV来确保数据的安全传输。提供了完整的加密和解密过程,包括字符串与字节数组之间的转换方法。
7416

被折叠的 条评论
为什么被折叠?



