日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ASP版MD5加密函数及用法

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP版MD5加密函数及用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MD5.asp 文件內容

<%
Private?Const?BITS_TO_A_BYTE?=?8
Private?Const?BYTES_TO_A_WORD?=?4
Private?Const?BITS_TO_A_WORD?=?32

Private?m_lOnBits(30)
Private?m_l2Power(30)
Dim?Md5OLD
Private?Function?LShift(lValue,?iShiftBits)
????
If?iShiftBits?=?0?Then
????????LShift?
=?lValue
????????
Exit?Function
????
ElseIf?iShiftBits?=?31?Then
????????
If?lValue?And?1?Then
????????????LShift?
=?&H80000000
????????
Else
????????????LShift?
=?0
????????
End?If
????????
Exit?Function
????
ElseIf?iShiftBits?<?0?or?iShiftBits?>?31?Then
????????Err.Raise?
6
????
End?If

????
If?(lValue?And?m_l2Power(31?-?iShiftBits))?Then
????????LShift?
=?((lValue?And?m_lOnBits(31?-?(iShiftBits?+?1)))?*?m_l2Power(iShiftBits))?or?&H80000000
????
Else
????????LShift?
=?((lValue?And?m_lOnBits(31?-?iShiftBits))?*?m_l2Power(iShiftBits))
????
End?If
End?Function

Private?Function?str2bin(varstr)?
????
Dim?varasc
????
Dim?i
????
Dim?varchar
????
Dim?varlow
????
Dim?varhigh
????
????str2bin
=""?
????
For?i=1?To?Len(varstr)?
????????varchar
=mid(varstr,i,1)?
????????varasc?
=?Asc(varchar)?
????????
????????
If?varasc<0?Then?
????????varasc?
=?varasc?+?65535?
????????
End?If?
????????
????????
If?varasc>255?Then?
????????varlow?
=?Left(Hex(Asc(varchar)),2)?
????????varhigh?
=?right(Hex(Asc(varchar)),2)?
????????str2bin?
=?str2bin?&?chrB("&H"?&?varlow)?&?chrB("&H"?&?varhigh)?
????????
Else?
????????str2bin?
=?str2bin?&?chrB(AscB(varchar))?
????????
End?If?
????
Next?
End?Function?

Private?Function?RShift(lValue,?iShiftBits)
????
If?iShiftBits?=?0?Then
????????RShift?
=?lValue
????????
Exit?Function
????
ElseIf?iShiftBits?=?31?Then
????????
If?lValue?And?&H80000000?Then
????????????RShift?
=?1
????????
Else
????????????RShift?
=?0
????????
End?If
????????
Exit?Function
????
ElseIf?iShiftBits?<?0?or?iShiftBits?>?31?Then
????????Err.Raise?
6
????
End?If

????RShift?
=?(lValue?And?&H7FFFFFFE)??m_l2Power(iShiftBits)

????
If?(lValue?And?&H80000000)?Then
????????RShift?
=?(RShift?or?(&H40000000??m_l2Power(iShiftBits?-?1)))
????
End?If
End?Function

Private?Function?RotateLeft(lValue,?iShiftBits)
????RotateLeft?
=?LShift(lValue,?iShiftBits)?or?RShift(lValue,?(32?-?iShiftBits))
End?Function

Private?Function?AddUnsigned(lX,?lY)
????
Dim?lX4
????
Dim?lY4
????
Dim?lX8
????
Dim?lY8
????
Dim?lResult

????lX8?
=?lX?And?&H80000000
????lY8?
=?lY?And?&H80000000
????lX4?
=?lX?And?&H40000000
????lY4?
=?lY?And?&H40000000
????
????lResult?
=?(lX?And?&H3FFFFFFF)?+?(lY?And?&H3FFFFFFF)

????
If?lX4?And?lY4?Then
????????lResult?
=?lResult?Xor?&H80000000?Xor?lX8?Xor?lY8
????
ElseIf?lX4?or?lY4?Then
????????
If?lResult?And?&H40000000?Then
????????????lResult?
=?lResult?Xor?&HC0000000?Xor?lX8?Xor?lY8
????????
Else
????????????lResult?
=?lResult?Xor?&H40000000?Xor?lX8?Xor?lY8
????????
End?If
????
Else
????????lResult?
=?lResult?Xor?lX8?Xor?lY8
????
End?If

????AddUnsigned?
=?lResult
End?Function

Private?Function?md5_F(x,?y,?z)
????md5_F?
=?(x?And?y)?or?((Not?x)?And?z)
End?Function

Private?Function?md5_G(x,?y,?z)
????md5_G?
=?(x?And?z)?or?(y?And?(Not?z))
End?Function

Private?Function?md5_H(x,?y,?z)
????md5_H?
=?(x?Xor?y?Xor?z)
End?Function

Private?Function?md5_I(x,?y,?z)
????md5_I?
=?(y?Xor?(x?or?(Not?z)))
End?Function

Private?Sub?md5_FF(a,?b,?c,?d,?x,?s,?ac)
????a?
=?AddUnsigned(a,?AddUnsigned(AddUnsigned(md5_F(b,?c,?d),?x),?ac))
????a?
=?RotateLeft(a,?s)
????a?
=?AddUnsigned(a,?b)
End?Sub

Private?Sub?md5_GG(a,?b,?c,?d,?x,?s,?ac)
????a?
=?AddUnsigned(a,?AddUnsigned(AddUnsigned(md5_G(b,?c,?d),?x),?ac))
????a?
=?RotateLeft(a,?s)
????a?
=?AddUnsigned(a,?b)
End?Sub

Private?Sub?md5_HH(a,?b,?c,?d,?x,?s,?ac)
????a?
=?AddUnsigned(a,?AddUnsigned(AddUnsigned(md5_H(b,?c,?d),?x),?ac))
????a?
=?RotateLeft(a,?s)
????a?
=?AddUnsigned(a,?b)
End?Sub

Private?Sub?md5_II(a,?b,?c,?d,?x,?s,?ac)
????a?
=?AddUnsigned(a,?AddUnsigned(AddUnsigned(md5_I(b,?c,?d),?x),?ac))
????a?
=?RotateLeft(a,?s)
????a?
=?AddUnsigned(a,?b)
End?Sub

Private?Function?ConvertToWordArray(sMessage)
????
Dim?lMessageLength
????
Dim?lNumberOfWords
????
Dim?lWordArray()
????
Dim?lBytePosition
????
Dim?lByteCount
????
Dim?lWordCount
????
Const?MODULUS_BITS?=?512
????
Const?CONGRUENT_BITS?=?448
????
If?Md5OLD?=?1?Then
????????lMessageLength?
=?Len(sMessage)
????
Else
????????lMessageLength?
=?LenB(sMessage)
????
End?If
????lNumberOfWords?
=?(((lMessageLength?+?((MODULUS_BITS?-?CONGRUENT_BITS)??BITS_TO_A_BYTE))??(MODULUS_BITS??BITS_TO_A_BYTE))?+?1)?*?(MODULUS_BITS??BITS_TO_A_WORD)
????
ReDim?lWordArray(lNumberOfWords?-?1)
????
????lBytePosition?
=?0
????lByteCount?
=?0
????
Do?Until?lByteCount?>=?lMessageLength
????????lWordCount?
=?lByteCount??BYTES_TO_A_WORD
????????lBytePosition?
=?(lByteCount?Mod?BYTES_TO_A_WORD)?*?BITS_TO_A_BYTE
????????
If?Md5OLD?=?1?Then
????????????lWordArray(lWordCount)?
=?lWordArray(lWordCount)?or?LShift(Asc(Mid(sMessage,?lByteCount?+?1,?1)),?lBytePosition)
????????
Else
????????????lWordArray(lWordCount)?
=?lWordArray(lWordCount)?or?LShift(AscB(MidB(sMessage,?lByteCount?+?1,?1)),?lBytePosition)
????????
End?If
????????lByteCount?
=?lByteCount?+?1
????
Loop
????lWordCount?
=?lByteCount??BYTES_TO_A_WORD
????lBytePosition?
=?(lByteCount?Mod?BYTES_TO_A_WORD)?*?BITS_TO_A_BYTE
????lWordArray(lWordCount)?
=?lWordArray(lWordCount)?or?LShift(&H80,?lBytePosition)
????lWordArray(lNumberOfWords?
-?2)?=?LShift(lMessageLength,?3)
????lWordArray(lNumberOfWords?
-?1)?=?RShift(lMessageLength,?29)
????ConvertToWordArray?
=?lWordArray
End?Function

Private?Function?WordToHex(lValue)
????
Dim?lByte
????
Dim?lCount
????
For?lCount?=?0?To?3
????????lByte?
=?RShift(lValue,?lCount?*?BITS_TO_A_BYTE)?And?m_lOnBits(BITS_TO_A_BYTE?-?1)
????????WordToHex?
=?WordToHex?&?Right("0"?&?Hex(lByte),?2)
????
Next
End?Function

Public?Function?MD5(sMessage,stype)
????m_lOnBits(
0)?=?CLng(1)
????m_lOnBits(
1)?=?CLng(3)
????m_lOnBits(
2)?=?CLng(7)
????m_lOnBits(
3)?=?CLng(15)
????m_lOnBits(
4)?=?CLng(31)
????m_lOnBits(
5)?=?CLng(63)
????m_lOnBits(
6)?=?CLng(127)
????m_lOnBits(
7)?=?CLng(255)
????m_lOnBits(
8)?=?CLng(511)
????m_lOnBits(
9)?=?CLng(1023)
????m_lOnBits(
10)?=?CLng(2047)
????m_lOnBits(
11)?=?CLng(4095)
????m_lOnBits(
12)?=?CLng(8191)
????m_lOnBits(
13)?=?CLng(16383)
????m_lOnBits(
14)?=?CLng(32767)
????m_lOnBits(
15)?=?CLng(65535)
????m_lOnBits(
16)?=?CLng(131071)
????m_lOnBits(
17)?=?CLng(262143)
????m_lOnBits(
18)?=?CLng(524287)
????m_lOnBits(
19)?=?CLng(1048575)
????m_lOnBits(
20)?=?CLng(2097151)
????m_lOnBits(
21)?=?CLng(4194303)
????m_lOnBits(
22)?=?CLng(8388607)
????m_lOnBits(
23)?=?CLng(16777215)
????m_lOnBits(
24)?=?CLng(33554431)
????m_lOnBits(
25)?=?CLng(67108863)
????m_lOnBits(
26)?=?CLng(134217727)
????m_lOnBits(
27)?=?CLng(268435455)
????m_lOnBits(
28)?=?CLng(536870911)
????m_lOnBits(
29)?=?CLng(1073741823)
????m_lOnBits(
30)?=?CLng(2147483647)
????
????m_l2Power(
0)?=?CLng(1)
????m_l2Power(
1)?=?CLng(2)
????m_l2Power(
2)?=?CLng(4)
????m_l2Power(
3)?=?CLng(8)
????m_l2Power(
4)?=?CLng(16)
????m_l2Power(
5)?=?CLng(32)
????m_l2Power(
6)?=?CLng(64)
????m_l2Power(
7)?=?CLng(128)
????m_l2Power(
8)?=?CLng(256)
????m_l2Power(
9)?=?CLng(512)
????m_l2Power(
10)?=?CLng(1024)
????m_l2Power(
11)?=?CLng(2048)
????m_l2Power(
12)?=?CLng(4096)
????m_l2Power(
13)?=?CLng(8192)
????m_l2Power(
14)?=?CLng(16384)
????m_l2Power(
15)?=?CLng(32768)
????m_l2Power(
16)?=?CLng(65536)
????m_l2Power(
17)?=?CLng(131072)
????m_l2Power(
18)?=?CLng(262144)
????m_l2Power(
19)?=?CLng(524288)
????m_l2Power(
20)?=?CLng(1048576)
????m_l2Power(
21)?=?CLng(2097152)
????m_l2Power(
22)?=?CLng(4194304)
????m_l2Power(
23)?=?CLng(8388608)
????m_l2Power(
24)?=?CLng(16777216)
????m_l2Power(
25)?=?CLng(33554432)
????m_l2Power(
26)?=?CLng(67108864)
????m_l2Power(
27)?=?CLng(134217728)
????m_l2Power(
28)?=?CLng(268435456)
????m_l2Power(
29)?=?CLng(536870912)
????m_l2Power(
30)?=?CLng(1073741824)
????
????
????
Dim?x
????
Dim?k
????
Dim?AA
????
Dim?BB
????
Dim?CC
????
Dim?DD
????
Dim?a
????
Dim?b
????
Dim?c
????
Dim?d
????
????
Const?S11?=?7
????
Const?S12?=?12
????
Const?S13?=?17
????
Const?S14?=?22
????
Const?S21?=?5
????
Const?S22?=?9
????
Const?S23?=?14
????
Const?S24?=?20
????
Const?S31?=?4
????
Const?S32?=?11
????
Const?S33?=?16
????
Const?S34?=?23
????
Const?S41?=?6
????
Const?S42?=?10
????
Const?S43?=?15
????
Const?S44?=?21
????
If?Md5OLD?=?1?Then
????????x?
=?ConvertToWordArray(sMessage)
????
Else
????????x?
=?ConvertToWordArray(str2bin(sMessage))
????
End?If
????a?
=?&H67452301
????b?
=?&HEFCDAB89
????c?
=?&H98BADCFE
????d?
=?&H10325476
????
????
For?k?=?0?To?UBound(x)?Step?16
????????AA?
=?a
????????BB?
=?b
????????CC?
=?c
????????DD?
=?d
????????
????????md5_FF?a,?b,?c,?d,?x(k?
+?0),?S11,?&HD76AA478
????????md5_FF?d,?a,?b,?c,?x(k?
+?1),?S12,?&HE8C7B756
????????md5_FF?c,?d,?a,?b,?x(k?
+?2),?S13,?&H242070DB
????????md5_FF?b,?c,?d,?a,?x(k?
+?3),?S14,?&HC1BDCEEE
????????md5_FF?a,?b,?c,?d,?x(k?
+?4),?S11,?&HF57C0FAF
????????md5_FF?d,?a,?b,?c,?x(k?
+?5),?S12,?&H4787C62A
????????md5_FF?c,?d,?a,?b,?x(k?
+?6),?S13,?&HA8304613
????????md5_FF?b,?c,?d,?a,?x(k?
+?7),?S14,?&HFD469501
????????md5_FF?a,?b,?c,?d,?x(k?
+?8),?S11,?&H698098D8
????????md5_FF?d,?a,?b,?c,?x(k?
+?9),?S12,?&H8B44F7AF
????????md5_FF?c,?d,?a,?b,?x(k?
+?10),?S13,?&HFFFF5BB1
????????md5_FF?b,?c,?d,?a,?x(k?
+?11),?S14,?&H895CD7BE
????????md5_FF?a,?b,?c,?d,?x(k?
+?12),?S11,?&H6B901122
????????md5_FF?d,?a,?b,?c,?x(k?
+?13),?S12,?&HFD987193
????????md5_FF?c,?d,?a,?b,?x(k?
+?14),?S13,?&HA679438E
????????md5_FF?b,?c,?d,?a,?x(k?
+?15),?S14,?&H49B40821
????????
????????md5_GG?a,?b,?c,?d,?x(k?
+?1),?S21,?&HF61E2562
????????md5_GG?d,?a,?b,?c,?x(k?
+?6),?S22,?&HC040B340
????????md5_GG?c,?d,?a,?b,?x(k?
+?11),?S23,?&H265E5A51
????????md5_GG?b,?c,?d,?a,?x(k?
+?0),?S24,?&HE9B6C7AA
????????md5_GG?a,?b,?c,?d,?x(k?
+?5),?S21,?&HD62F105D
????????md5_GG?d,?a,?b,?c,?x(k?
+?10),?S22,?&H2441453
????????md5_GG?c,?d,?a,?b,?x(k?
+?15),?S23,?&HD8A1E681
????????md5_GG?b,?c,?d,?a,?x(k?
+?4),?S24,?&HE7D3FBC8
????????md5_GG?a,?b,?c,?d,?x(k?
+?9),?S21,?&H21E1CDE6
????????md5_GG?d,?a,?b,?c,?x(k?
+?14),?S22,?&HC33707D6
????????md5_GG?c,?d,?a,?b,?x(k?
+?3),?S23,?&HF4D50D87
????????md5_GG?b,?c,?d,?a,?x(k?
+?8),?S24,?&H455A14ED
????????md5_GG?a,?b,?c,?d,?x(k?
+?13),?S21,?&HA9E3E905
????????md5_GG?d,?a,?b,?c,?x(k?
+?2),?S22,?&HFCEFA3F8
????????md5_GG?c,?d,?a,?b,?x(k?
+?7),?S23,?&H676F02D9
????????md5_GG?b,?c,?d,?a,?x(k?
+?12),?S24,?&H8D2A4C8A
????????
????????md5_HH?a,?b,?c,?d,?x(k?
+?5),?S31,?&HFFFA3942
????????md5_HH?d,?a,?b,?c,?x(k?
+?8),?S32,?&H8771F681
????????md5_HH?c,?d,?a,?b,?x(k?
+?11),?S33,?&H6D9D6122
????????md5_HH?b,?c,?d,?a,?x(k?
+?14),?S34,?&HFDE5380C
????????md5_HH?a,?b,?c,?d,?x(k?
+?1),?S31,?&HA4BEEA44
????????md5_HH?d,?a,?b,?c,?x(k?
+?4),?S32,?&H4BDECFA9
????????md5_HH?c,?d,?a,?b,?x(k?
+?7),?S33,?&HF6BB4B60
????????md5_HH?b,?c,?d,?a,?x(k?
+?10),?S34,?&HBEBFBC70
????????md5_HH?a,?b,?c,?d,?x(k?
+?13),?S31,?&H289B7EC6
????????md5_HH?d,?a,?b,?c,?x(k?
+?0),?S32,?&HEAA127FA
????????md5_HH?c,?d,?a,?b,?x(k?
+?3),?S33,?&HD4EF3085
????????md5_HH?b,?c,?d,?a,?x(k?
+?6),?S34,?&H4881D05
????????md5_HH?a,?b,?c,?d,?x(k?
+?9),?S31,?&HD9D4D039
????????md5_HH?d,?a,?b,?c,?x(k?
+?12),?S32,?&HE6DB99E5
????????md5_HH?c,?d,?a,?b,?x(k?
+?15),?S33,?&H1FA27CF8
????????md5_HH?b,?c,?d,?a,?x(k?
+?2),?S34,?&HC4AC5665
????????
????????md5_II?a,?b,?c,?d,?x(k?
+?0),?S41,?&HF4292244
????????md5_II?d,?a,?b,?c,?x(k?
+?7),?S42,?&H432AFF97
????????md5_II?c,?d,?a,?b,?x(k?
+?14),?S43,?&HAB9423A7
????????md5_II?b,?c,?d,?a,?x(k?
+?5),?S44,?&HFC93A039
????????md5_II?a,?b,?c,?d,?x(k?
+?12),?S41,?&H655B59C3
????????md5_II?d,?a,?b,?c,?x(k?
+?3),?S42,?&H8F0CCC92
????????md5_II?c,?d,?a,?b,?x(k?
+?10),?S43,?&HFFEFF47D
????????md5_II?b,?c,?d,?a,?x(k?
+?1),?S44,?&H85845DD1
????????md5_II?a,?b,?c,?d,?x(k?
+?8),?S41,?&H6FA87E4F
????????md5_II?d,?a,?b,?c,?x(k?
+?15),?S42,?&HFE2CE6E0
????????md5_II?c,?d,?a,?b,?x(k?
+?6),?S43,?&HA3014314
????????md5_II?b,?c,?d,?a,?x(k?
+?13),?S44,?&H4E0811A1
????????md5_II?a,?b,?c,?d,?x(k?
+?4),?S41,?&HF7537E82
????????md5_II?d,?a,?b,?c,?x(k?
+?11),?S42,?&HBD3AF235
????????md5_II?c,?d,?a,?b,?x(k?
+?2),?S43,?&H2AD7D2BB
????????md5_II?b,?c,?d,?a,?x(k?
+?9),?S44,?&HEB86D391
????????
????????a?
=?AddUnsigned(a,?AA)
????????b?
=?AddUnsigned(b,?BB)
????????c?
=?AddUnsigned(c,?CC)
????????d?
=?AddUnsigned(d,?DD)
????
Next
????
????
if?stype=32?then
????MD5?
=?LCase(WordToHex(a)?&?WordToHex(b)?&?WordToHex(c)?&?WordToHex(d))
????
else
????MD5
=LCase(WordToHex(b)?&?WordToHex(c))??'I?crop?this?to?fit?16byte?database?password?:D
????end?if
End?Function
%>

?test.asp 測試頁的內容

<!--#include?file=md5.asp-->

<%
response.write?MD5(
"http://blog.sina.com.cn/juyonghong",32)??'生成32位編碼
response.write?"<br><br>"
response.write?MD5(
"http://blog.sina.com.cn/juyonghong",16)?'生成16位編碼
%>

注:

1、由于MD5加密目前來說是不可逆的,即可以通過原始數據生成md5碼后,但不能通過md5碼還原數據。

2、雖然不可逆,但同一個字符串只能生成同樣的一組md5碼。

具體使用方法:(以用戶注冊、登錄為例)

1、注冊時,將md5(request.form("password"),16)的值存入數據庫;

2、登錄驗證時,將數據庫中存的md5碼與md5("密碼",16)比較。

總結

以上是生活随笔為你收集整理的ASP版MD5加密函数及用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。