@@ -85,38 +85,34 @@ public static class Hash
8585 #region 辅助函数
8686
8787 /// <summary>
88- /// 统一调用哈希压缩
88+ /// 哈希压缩统一调用
8989 /// </summary>
9090 /// <param name="mid">源压缩中间哈希值</param>
9191 /// <param name="clv">哈希压缩级别</param>
9292 private static byte [ ] Compress ( ref byte [ ] mid , CompressLevel clv )
9393 {
94+ var ans = new byte [ ( int ) clv ] ;
95+
9496 switch ( clv )
9597 {
9698 case CompressLevel . x128 :
97- var ans128 = new byte [ 128 ] ;
98- hash_compress_128_str ( mid , ans128 ) ;
99- return ans128 ;
99+ hash_compress_128_str ( mid , ans ) ;
100+ return ans ;
100101 case CompressLevel . x64 :
101- var ans64 = new byte [ 64 ] ;
102- hash_compress_64_str ( mid , ans64 ) ;
103- return ans64 ;
102+ hash_compress_64_str ( mid , ans ) ;
103+ return ans ;
104104 case CompressLevel . x32 :
105- var ans32 = new byte [ 32 ] ;
106- hash_compress_32_str ( mid , ans32 ) ;
107- return ans32 ;
105+ hash_compress_32_str ( mid , ans ) ;
106+ return ans ;
108107 case CompressLevel . x16 :
109- var ans16 = new byte [ 16 ] ;
110- hash_compress_16_str ( mid , ans16 ) ;
111- return ans16 ;
108+ hash_compress_16_str ( mid , ans ) ;
109+ return ans ;
112110 case CompressLevel . x8 :
113- var ans8 = new byte [ 8 ] ;
114- hash_compress_8_str ( mid , ans8 ) ;
115- return ans8 ;
111+ hash_compress_8_str ( mid , ans ) ;
112+ return ans ;
116113 case CompressLevel . x4 :
117- var ans4 = new byte [ 4 ] ;
118- hash_compress_4_str ( mid , ans4 ) ;
119- return ans4 ;
114+ hash_compress_4_str ( mid , ans ) ;
115+ return ans ;
120116 default : return Array . Empty < byte > ( ) ;
121117 }
122118 }
@@ -153,13 +149,16 @@ public static byte[] FromString(string str,
153149 {
154150 var array = Encoding . UTF8 . GetBytes ( str ) ; // 源字符串转 byte[]
155151 var mid = new byte [ 2048 ] ; // 存储哈希值
152+
156153 hash_str ( array , mid , array . Length ) ; // 哈希运算
154+
157155 var rst = Compress ( ref mid , clv ) ; // 哈希压缩运算
156+
158157 return rst ; // 返回哈希压缩值
159158 }
160159
161160 /// <summary>
162- /// 进行字符串哈希(返回十六进制字符串)
161+ /// 进行字符串哈希 (返回十六进制字符串)
163162 /// </summary>
164163 /// <param name="str">字符串</param>
165164 /// <param name="rmLink">是否移除连字符</param>
@@ -170,9 +169,12 @@ public static string FromString2Hex(string str, bool rmLink = false,
170169 {
171170 var array = Encoding . UTF8 . GetBytes ( str ) ; // 源字符串转 byte[]
172171 var mid = new byte [ 2048 ] ; // 存储哈希值
172+
173173 hash_str ( array , mid , array . Length ) ; // 哈希运算
174+
174175 var rst = Compress ( ref mid , clv ) ; // 哈希压缩运算
175176 var ans = BitConverter . ToString ( rst ) ; // 哈希压缩运算转十六进制字符串
177+
176178 return rmLink ? ans . Replace ( "-" , "" ) : ans ; // 返回字符串, 据参数删除连字符
177179 }
178180
@@ -183,25 +185,30 @@ public static string FromString2Hex(string str, bool rmLink = false,
183185 /// <returns>哈希后的Byte数组</returns>
184186 public static byte [ ] FromString_WithoutCompress ( string str )
185187 {
186- byte [ ] array = Encoding . UTF8 . GetBytes ( str ) ; // 源字符串转 byte[]
187- byte [ ] mid = new byte [ 2048 ] ; // 存储哈希值
188+ var array = Encoding . UTF8 . GetBytes ( str ) ; // 源字符串转 byte[]
189+ var mid = new byte [ 2048 ] ; // 存储哈希值
190+
188191 hash_str ( array , mid , array . Length ) ; // 哈希运算
192+
189193 return mid ; // 返回哈希压缩值
190194 }
191195
192196 /// <summary>
193- /// 进行字符串哈希(返回十六进制字符串, 不压缩)
197+ /// 进行字符串哈希 (返回十六进制字符串, 不压缩)
194198 /// </summary>
195199 /// <param name="str">字符串</param>
196200 /// <param name="rmLink">是否移除连字符</param>
197201 /// <returns>十六进制不压缩哈希字符串</returns>
198202 public static string FromString2Hex_WithoutCompress ( string str ,
199203 bool rmLink = false )
200204 {
201- byte [ ] array = Encoding . UTF8 . GetBytes ( str ) ; // 源字符串转 byte[]
202- byte [ ] mid = new byte [ 2048 ] ; // 存储哈希值
205+ var array = Encoding . UTF8 . GetBytes ( str ) ; // 源字符串转 byte[]
206+ var mid = new byte [ 2048 ] ; // 存储哈希值
207+
203208 hash_str ( array , mid , array . Length ) ; // 哈希运算
204- string ans = BitConverter . ToString ( mid ) ; // 哈希压缩运算转十六进制字符串
209+
210+ var ans = BitConverter . ToString ( mid ) ; // 哈希压缩运算转十六进制字符串
211+
205212 return rmLink ? ans . Replace ( "-" , "" ) : ans ; // 返回字符串, 据参数删除连字符
206213 }
207214
@@ -222,10 +229,12 @@ public enum HashMode
222229 /// <summary>
223230 /// 哈希压缩级别
224231 /// </summary>
225- public enum CompressLevel
232+ public enum CompressLevel : int
226233 {
227234 // ReSharper disable InconsistentNaming
228- x128 = 5 , x64 = 4 , x32 = 3 , x16 = 2 , x8 = 1 , x4 = 0
235+
236+ x128 = 128 , x64 = 64 , x32 = 32 , x16 = 16 , x8 = 8 , x4 = 4
237+
229238 // ReSharper restore InconsistentNaming
230239 }
231240
0 commit comments