forked from Siyy/RoadFlow
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHashEncrypt.cs
More file actions
145 lines (121 loc) · 4.16 KB
/
HashEncrypt.cs
File metadata and controls
145 lines (121 loc) · 4.16 KB
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
using System;
using System.IO;
using System.Data;
using System.Text;
using System.Diagnostics;
using System.Security;
using System.Security.Cryptography;
namespace Utility
{
/// <summary>
///
/// </summary>
public class HashEncrypt
{
public HashEncrypt()
{
}
//private string strIN;
private bool isReturnNum = false;
private bool isCaseSensitive = true;
/**/
/// <summary>
/// 类初始化,此类提供MD5,SHA1,SHA256,SHA512等四种算法,加密字串的长度依次增大。
/// </summary>
/// <param name="IsCaseSensitive">是否区分大小写</param>
/// <param name="IsReturnNum">是否返回为加密后字符的Byte代码</param>
public HashEncrypt(bool IsCaseSensitive, bool IsReturnNum)
{
this.isReturnNum = IsReturnNum;
this.isCaseSensitive = IsCaseSensitive;
}
private string getstrIN(string strIN)
{
//string strIN = strIN;
if (strIN.Length == 0)
{
strIN = "~NULL~";
}
if (isCaseSensitive == false)
{
strIN = strIN.ToUpper();
}
return strIN;
}
public string MD5Encrypt(string strIN)
{
if (strIN.IsNullOrEmpty()) return string.Empty;
//string strIN = getstrIN(strIN);
byte[] tmpByte;
MD5 md5 = new MD5CryptoServiceProvider();
tmpByte = md5.ComputeHash(GetKeyByteArray(getstrIN(strIN)));
md5.Clear();
return GetStringValue(tmpByte);
}
public string SHA1Encrypt(string strIN)
{
if (strIN.IsNullOrEmpty()) return string.Empty;
//string strIN = getstrIN(strIN);
byte[] tmpByte;
SHA1 sha1 = new SHA1CryptoServiceProvider();
tmpByte = sha1.ComputeHash(GetKeyByteArray(strIN));
sha1.Clear();
return GetStringValue(tmpByte);
}
public string SHA256Encrypt(string strIN)
{
if (strIN.IsNullOrEmpty()) return string.Empty;
//string strIN = getstrIN(strIN);
byte[] tmpByte;
SHA256 sha256 = new SHA256Managed();
tmpByte = sha256.ComputeHash(GetKeyByteArray(strIN));
sha256.Clear();
return GetStringValue(tmpByte);
}
public string SHA512Encrypt(string strIN)
{
if (strIN.IsNullOrEmpty()) return string.Empty;
//string strIN = getstrIN(strIN);
byte[] tmpByte;
SHA512 sha512 = new SHA512Managed();
tmpByte = sha512.ComputeHash(GetKeyByteArray(strIN));
sha512.Clear();
return GetStringValue(tmpByte);
}
private string GetStringValue(byte[] Byte)
{
string tmpString = "";
if (this.isReturnNum == false)
{
ASCIIEncoding Asc = new ASCIIEncoding();
tmpString = Asc.GetString(Byte);
}
else
{
int iCounter;
for (iCounter = 0; iCounter < Byte.Length; iCounter++)
{
tmpString = tmpString + Byte[iCounter].ToString();
}
}
return tmpString;
}
private byte[] GetKeyByteArray(string strKey)
{
ASCIIEncoding Asc = new ASCIIEncoding();
int tmpStrLen = strKey.Length;
byte[] tmpByte = new byte[tmpStrLen - 1];
tmpByte = Asc.GetBytes(strKey);
return tmpByte;
}
/// <summary>
/// .net系统的MD5加密方法
/// </summary>
/// <param name="strIN"></param>
/// <returns></returns>
public string MD5System(string strIN)
{
return strIN.IsNullOrEmpty() ? "" : System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strIN, "MD5");
}
}
}