MD5加密的结果为什么不同?
函数如下:
Public Function MD5(ByVal strSource As String, ByVal Code As Int16) As String
Dim dataToHash As Byte() = (New System.Text.ASCIIEncoding).GetBytes(strSource)
Dim hashvalue As Byte() = CType(System.Security.Cryptography.CryptoConfig.CreateFromName("MD5"), System.Security.Cryptography.HashAlgorithm).ComputeHash(dataToHash)
Dim i As Integer
Select Case Code
Case 16 '选择16位字符的加密结果
For i = 4 To 11
MD5 += Hex(hashvalue(i)).ToLower
Next
Case 32 '选择32位字符的加密结果
For i = 0 To 15
MD5 += Hex(hashvalue(i)).ToLower
Next
Case Else 'Code错误时,返回全部字符串,即32位字符
For i = 0 To hashvalue.Length - 1
MD5 += Hex(hashvalue(i)).ToLower
Next
End Select
Return MD5
End Function
测试结果:
输入:0023
MD5(TextBox2.Text, 16)的结果是:8cb217baa866b31 只有15位,动网同样的数是8cb2170baa866b31 16位
输入:0008
MD5(TextBox2.Text, 16)的结果是:4a4bd33c834bc6b9 有16位,动网同样的数是4a4bd33c834bc6b9 也是16位而且相等。
为什么同样的算法,类似的输入,怎么会少一位呢?请大家指点。
问题点数:100、回复次数:6Top
1 楼qugui(阿贵)回复于 2006-03-17 15:05:57 得分 25
没试过Top
2 楼copico(北北)回复于 2006-03-17 15:09:07 得分 25
因为MD5里面的参数有不同吧?Top
3 楼kowloons(0分帖先锋)回复于 2006-03-17 17:52:51 得分 25
因为输入的手不同 所以系统检测到指纹不一样喽Top
4 楼why2002plus()回复于 2006-03-30 14:04:00 得分 0
?Top
5 楼zhouheng123456(授之以鱼,不如授之以渔)回复于 2006-03-30 14:15:11 得分 25
我没研究过MD5
但我想.
他可能是在加密是随机生成了N个数..
用这些数对源数据进行算法加密.
而这随机生成的数字应该就是保存在结果中
所以算法是固定的..结果就当然不固定了.
Top
6 楼why2002plus()回复于 2006-05-13 13:32:46 得分 0
无解,一贯做法,结贴,人人有分,谢谢各位。Top




