📄 md5不可逆加密算法的asp实现实例.htm
字号:
z)<BR>End Function</P>
<P>Private Function md5_I(x, y, z)<BR>md5_I = (y Xor (x Or (Not
z)))<BR>End Function</P>
<P>Private Sub md5_FF(a, b, c, d, x, s, ac)<BR>a = AddUnsigned(a,
AddUnsigned(AddUnsigned(md5_F(b, c, d), x), ac))<BR>a =
RotateLeft(a, s)<BR>a = AddUnsigned(a, b)<BR>End Sub</P>
<P>Private Sub md5_GG(a, b, c, d, x, s, ac)<BR>a = AddUnsigned(a,
AddUnsigned(AddUnsigned(md5_G(b, c, d), x), ac))<BR>a =
RotateLeft(a, s)<BR>a = AddUnsigned(a, b)<BR>End Sub</P>
<P>Private Sub md5_HH(a, b, c, d, x, s, ac)<BR>a = AddUnsigned(a,
AddUnsigned(AddUnsigned(md5_H(b, c, d), x), ac))<BR>a =
RotateLeft(a, s)<BR>a = AddUnsigned(a, b)<BR>End Sub</P>
<P>Private Sub md5_II(a, b, c, d, x, s, ac)<BR>a = AddUnsigned(a,
AddUnsigned(AddUnsigned(md5_I(b, c, d), x), ac))<BR>a =
RotateLeft(a, s)<BR>a = AddUnsigned(a, b)<BR>End Sub</P>
<P>Private Function ConvertToWordArray(sMessage)<BR>Dim
lMessageLength<BR>Dim lNumberOfWords<BR>Dim lWordArray()<BR>Dim
lBytePosition<BR>Dim lByteCount<BR>Dim lWordCount<BR><BR>Const
MODULUS_BITS = 512<BR>Const CONGRUENT_BITS =
448<BR><BR>lMessageLength = Len(sMessage)<BR><BR>lNumberOfWords =
(((lMessageLength + ((MODULUS_BITS - CONGRUENT_BITS) \
BITS_TO_A_BYTE)) \ (MODULUS_BITS \ BITS_TO_A_BYTE)) + 1) *
(MODULUS_BITS \ BITS_TO_A_WORD)<BR>ReDim lWordArray(lNumberOfWords
- 1)<BR><BR>lBytePosition = 0<BR>lByteCount = 0<BR>Do Until
lByteCount >= lMessageLength<BR>lWordCount = lByteCount \
BYTES_TO_A_WORD<BR>lBytePosition = (lByteCount Mod
BYTES_TO_A_WORD) * BITS_TO_A_BYTE<BR>lWordArray(lWordCount) =
lWordArray(lWordCount) Or LShift(Asc(Mid(sMessage, lByteCount + 1,
1)), lBytePosition)<BR>lByteCount = lByteCount + 1<BR>Loop</P>
<P>lWordCount = lByteCount \ BYTES_TO_A_WORD<BR>lBytePosition =
(lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE</P>
<P>lWordArray(lWordCount) = lWordArray(lWordCount) Or
LShift(&H80, lBytePosition)</P>
<P>lWordArray(lNumberOfWords - 2) = LShift(lMessageLength,
3)<BR>lWordArray(lNumberOfWords - 1) = RShift(lMessageLength,
29)<BR><BR>ConvertToWordArray = lWordArray<BR>End Function</P>
<P>Private Function WordToHex(lValue)<BR>Dim lByte<BR>Dim
lCount<BR><BR>For lCount = 0 To 3<BR>lByte = RShift(lValue, lCount
* BITS_TO_A_BYTE) And m_lOnBits(BITS_TO_A_BYTE - 1)<BR>WordToHex =
WordToHex & Right("0" & Hex(lByte), 2)<BR>Next<BR>End
Function</P>
<P>Public Function MD5(sMessage)<BR>m_lOnBits(0) =
CLng(1)<BR>m_lOnBits(1) = CLng(3)<BR>m_lOnBits(2) =
CLng(7)<BR>m_lOnBits(3) = CLng(15)<BR>m_lOnBits(4) =
CLng(31)<BR>m_lOnBits(5) = CLng(63)<BR>m_lOnBits(6) =
CLng(127)<BR>m_lOnBits(7) = CLng(255)<BR>m_lOnBits(8) =
CLng(511)<BR>m_lOnBits(9) = CLng(1023)<BR>m_lOnBits(10) =
CLng(2047)<BR>m_lOnBits(11) = CLng(4095)<BR>m_lOnBits(12) =
CLng(8191)<BR>m_lOnBits(13) = CLng(16383)<BR>m_lOnBits(14) =
CLng(32767)<BR>m_lOnBits(15) = CLng(65535)<BR>m_lOnBits(16) =
CLng(131071)<BR>m_lOnBits(17) = CLng(262143)<BR>m_lOnBits(18) =
CLng(524287)<BR>m_lOnBits(19) = CLng(1048575)<BR>m_lOnBits(20) =
CLng(2097151)<BR>m_lOnBits(21) = CLng(4194303)<BR>m_lOnBits(22) =
CLng(8388607)<BR>m_lOnBits(23) = CLng(16777215)<BR>m_lOnBits(24) =
CLng(33554431)<BR>m_lOnBits(25) = CLng(67108863)<BR>m_lOnBits(26)
= CLng(134217727)<BR>m_lOnBits(27) =
CLng(268435455)<BR>m_lOnBits(28) =
CLng(536870911)<BR>m_lOnBits(29) =
CLng(1073741823)<BR>m_lOnBits(30) =
CLng(2147483647)<BR><BR>m_l2Power(0) = CLng(1)<BR>m_l2Power(1) =
CLng(2)<BR>m_l2Power(2) = CLng(4)<BR>m_l2Power(3) =
CLng(8)<BR>m_l2Power(4) = CLng(16)<BR>m_l2Power(5) =
CLng(32)<BR>m_l2Power(6) = CLng(64)<BR>m_l2Power(7) =
CLng(128)<BR>m_l2Power(8) = CLng(256)<BR>m_l2Power(9) =
CLng(512)<BR>m_l2Power(10) = CLng(1024)<BR>m_l2Power(11) =
CLng(2048)<BR>m_l2Power(12) = CLng(4096)<BR>m_l2Power(13) =
CLng(8192)<BR>m_l2Power(14) = CLng(16384)<BR>m_l2Power(15) =
CLng(32768)<BR>m_l2Power(16) = CLng(65536)<BR>m_l2Power(17) =
CLng(131072)<BR>m_l2Power(18) = CLng(262144)<BR>m_l2Power(19) =
CLng(524288)<BR>m_l2Power(20) = CLng(1048576)<BR>m_l2Power(21) =
CLng(2097152)<BR>m_l2Power(22) = CLng(4194304)<BR>m_l2Power(23) =
CLng(8388608)<BR>m_l2Power(24) = CLng(16777216)<BR>m_l2Power(25) =
CLng(33554432)<BR>m_l2Power(26) = CLng(67108864)<BR>m_l2Power(27)
= CLng(134217728)<BR>m_l2Power(28) =
CLng(268435456)<BR>m_l2Power(29) =
CLng(536870912)<BR>m_l2Power(30) = CLng(1073741824)</P>
<P><BR>Dim x<BR>Dim k<BR>Dim AA<BR>Dim BB<BR>Dim CC<BR>Dim
DD<BR>Dim a<BR>Dim b<BR>Dim c<BR>Dim d<BR><BR>Const S11 =
7<BR>Const S12 = 12<BR>Const S13 = 17<BR>Const S14 = 22<BR>Const
S21 = 5<BR>Const S22 = 9<BR>Const S23 = 14<BR>Const S24 =
20<BR>Const S31 = 4<BR>Const S32 = 11<BR>Const S33 = 16<BR>Const
S34 = 23<BR>Const S41 = 6<BR>Const S42 = 10<BR>Const S43 =
15<BR>Const S44 = 21</P>
<P>x = ConvertToWordArray(sMessage)<BR><BR>a = &H67452301<BR>b
= &HEFCDAB89<BR>c = &H98BADCFE<BR>d = &H10325476</P>
<P>For k = 0 To UBound(x) Step 16<BR>AA = a<BR>BB = b<BR>CC =
c<BR>DD = d<BR><BR>md5_FF a, b, c, d, x(k + 0), S11,
&HD76AA478<BR>md5_FF d, a, b, c, x(k + 1), S12,
&HE8C7B756<BR>md5_FF c, d, a, b, x(k + 2), S13,
&H242070DB<BR>md5_FF b, c, d, a, x(k + 3), S14,
&HC1BDCEEE<BR>md5_FF a, b, c, d, x(k + 4), S11,
&HF57C0FAF<BR>md5_FF d, a, b, c, x(k + 5), S12,
&H4787C62A<BR>md5_FF c, d, a, b, x(k + 6), S13,
&HA8304613<BR>md5_FF b, c, d, a, x(k + 7), S14,
&HFD469501<BR>md5_FF a, b, c, d, x(k + 8), S11,
&H698098D8<BR>md5_FF d, a, b, c, x(k + 9), S12,
&H8B44F7AF<BR>md5_FF c, d, a, b, x(k + 10), S13,
&HFFFF5BB1<BR>md5_FF b, c, d, a, x(k + 11), S14,
&H895CD7BE<BR>md5_FF a, b, c, d, x(k + 12), S11,
&H6B901122<BR>md5_FF d, a, b, c, x(k + 13), S12,
&HFD987193<BR>md5_FF c, d, a, b, x(k + 14), S13,
&HA679438E<BR>md5_FF b, c, d, a, x(k + 15), S14,
&H49B40821<BR><BR>md5_GG a, b, c, d, x(k + 1), S21,
&HF61E2562<BR>md5_GG d, a, b, c, x(k + 6), S22,
&HC040B340<BR>md5_GG c, d, a, b, x(k + 11), S23,
&H265E5A51<BR>md5_GG b, c, d, a, x(k + 0), S24,
&HE9B6C7AA<BR>md5_GG a, b, c, d, x(k + 5), S21,
&HD62F105D<BR>md5_GG d, a, b, c, x(k + 10), S22,
&H2441453<BR>md5_GG c, d, a, b, x(k + 15), S23,
&HD8A1E681<BR>md5_GG b, c, d, a, x(k + 4), S24,
&HE7D3FBC8<BR>md5_GG a, b, c, d, x(k + 9), S21,
&H21E1CDE6<BR>md5_GG d, a, b, c, x(k + 14), S22,
&HC33707D6<BR>md5_GG c, d, a, b, x(k + 3), S23,
&HF4D50D87<BR>md5_GG b, c, d, a, x(k + 8), S24,
&H455A14ED<BR>md5_GG a, b, c, d, x(k + 13), S21,
&HA9E3E905<BR>md5_GG d, a, b, c, x(k + 2), S22,
&HFCEFA3F8<BR>md5_GG c, d, a, b, x(k + 7), S23,
&H676F02D9<BR>md5_GG b, c, d, a, x(k + 12), S24,
&H8D2A4C8A<BR><BR>md5_HH a, b, c, d, x(k + 5), S31,
&HFFFA3942<BR>md5_HH d, a, b, c, x(k + 8), S32,
&H8771F681<BR>md5_HH c, d, a, b, x(k + 11), S33,
&H6D9D6122<BR>md5_HH b, c, d, a, x(k + 14), S34,
&HFDE5380C<BR>md5_HH a, b, c, d, x(k + 1), S31,
&HA4BEEA44<BR>md5_HH d, a, b, c, x(k + 4), S32,
&H4BDECFA9<BR>md5_HH c, d, a, b, x(k + 7), S33,
&HF6BB4B60<BR>md5_HH b, c, d, a, x(k + 10), S34,
&HBEBFBC70<BR>md5_HH a, b, c, d, x(k + 13), S31,
&H289B7EC6<BR>md5_HH d, a, b, c, x(k + 0), S32,
&HEAA127FA<BR>md5_HH c, d, a, b, x(k + 3), S33,
&HD4EF3085<BR>md5_HH b, c, d, a, x(k + 6), S34,
&H4881D05<BR>md5_HH a, b, c, d, x(k + 9), S31,
&HD9D4D039<BR>md5_HH d, a, b, c, x(k + 12), S32,
&HE6DB99E5<BR>md5_HH c, d, a, b, x(k + 15), S33,
&H1FA27CF8<BR>md5_HH b, c, d, a, x(k + 2), S34,
&HC4AC5665<BR><BR>md5_II a, b, c, d, x(k + 0), S41,
&HF4292244<BR>md5_II d, a, b, c, x(k + 7), S42,
&H432AFF97<BR>md5_II c, d, a, b, x(k + 14), S43,
&HAB9423A7<BR>md5_II b, c, d, a, x(k + 5), S44,
&HFC93A039<BR>md5_II a, b, c, d, x(k + 12), S41,
&H655B59C3<BR>md5_II d, a, b, c, x(k + 3), S42,
&H8F0CCC92<BR>md5_II c, d, a, b, x(k + 10), S43,
&HFFEFF47D<BR>md5_II b, c, d, a, x(k + 1), S44,
&H85845DD1<BR>md5_II a, b, c, d, x(k + 8), S41,
&H6FA87E4F<BR>md5_II d, a, b, c, x(k + 15), S42,
&HFE2CE6E0<BR>md5_II c, d, a, b, x(k + 6), S43,
&HA3014314<BR>md5_II b, c, d, a, x(k + 13), S44,
&H4E0811A1<BR>md5_II a, b, c, d, x(k + 4), S41,
&HF7537E82<BR>md5_II d, a, b, c, x(k + 11), S42,
&HBD3AF235<BR>md5_II c, d, a, b, x(k + 2), S43,
&H2AD7D2BB<BR>md5_II b, c, d, a, x(k + 9), S44,
&HEB86D391<BR><BR>a = AddUnsigned(a, AA)<BR>b = AddUnsigned(b,
BB)<BR>c = AddUnsigned(c, CC)<BR>d = AddUnsigned(d,
DD)<BR>Next<BR><BR>MD5 = LCase(WordToHex(a) & WordToHex(b)
& WordToHex(c) & WordToHex(d))<BR>' MD5=LCase(WordToHex(b)
& WordToHex(c)) 'I crop this to fit 16byte database password
:D<BR>End Function</P>
<P>Response.Write "123456的加密结果为[" & md5 ("123456") &
"]"<BR>%> <BR><BR></P></BLOCKQUOTE></TD></TR>
<TR>
<TD class=p4 vAlign=top width="50%">
<BLOCKQUOTE>原作者:沙滩小子(转)<BR>来 源:动网先锋<BR>共有4739位读者阅读过此文<BR>【<A
href="http://bbs.aspsky.net/list.asp?boardid=1">发表评论</A>】
</BLOCKQUOTE></TD>
<TD class=p4 vAlign=top width="50%">
<P>
<LI><FONT color=#0772b1>上篇文章</FONT>:<A
href="http://www.aspsky.net/article/list.asp?id=2598">ASP.NET
Framework深度历险(3)</A> <BR>
<LI><FONT color=#0772b1>下篇文章</FONT>:<A
href="http://www.aspsky.net/article/list.asp?id=2600">如何在服务器端调用winzip命令行对上传的多个文件打包压缩</A>
</LI></TD></TR>
<TR>
<TD bgColor=#297dff class=p4 height=20 width="50%"><FONT
color=#ceffff> → 本周热门</FONT></TD>
<TD bgColor=#297dff class=p4 width="50%"><FONT color=#ceffff> →
相关文章</FONT></TD></TR>
<TR>
<TD bgColor=#586011 colSpan=2 height=1><SPACER type="block"
width="1"></TD></TR>
<TR>
<TD colSpan=2 height=7></TD></TR>
<TR>
<TD class=p4 vAlign=top width="50%">
<LI><A href="http://www.aspsky.net/article/list.asp?id=1510"
target=_top title="SQL Server 7.0 入门(一)">SQL Server 7.0
入门(...</A>[<FONT color=red>7239</FONT>]<BR>
<LI><A href="http://www.aspsky.net/article/list.asp?id=1540"
target=_top title=PHP4实际应用经验篇(1)>PHP4实际应用经验篇(1)</A>[<FONT
color=red>7135</FONT>]<BR>
<LI><A href="http://www.aspsky.net/article/list.asp?id=1536"
target=_top
title=无组件文件上传代码实例(支持多文件上传及文件和input域混合上传)>无组件文件上传代码实例(支持多文件上...</A>[<FONT
color=red>6029</FONT>]<BR>
<LI><A href="http://www.aspsky.net/article/list.asp?id=2557"
target=_top title=树型结构在ASP中的简单解决>树型结构在ASP中的简单解决</A>[<FONT
color=red>5757</FONT>]<BR>
<LI><A href="http://www.aspsky.net/article/list.asp?id=1545"
target=_top title=PHP4实际应用经验篇(6)>PHP4实际应用经验篇(6)</A>[<FONT
color=red>5599</FONT>]<BR>
<LI><A href="http://www.aspsky.net/article/list.asp?id=2563"
target=_top title=一个老个写的无组件上传>一个老个写的无组件上传</A>[<FONT
color=red>5013</FONT>]<BR>
<LI><A href="http://www.aspsky.net/article/list.asp?id=1542"
target=_top title=PHP4实际应用经验篇(3)>PHP4实际应用经验篇(3)</A>[<FONT
color=red>4731</FONT>]<BR></LI></TD>
<TD class=p4 vAlign=top width="50%">
<LI><A
href="http://www.aspsky.net/article/list.asp?id=2785">RC4经典加密算法VB版本代码</A><BR>
<LI><A
href="http://www.aspsky.net/article/list.asp?id=2783">在asp中通过vbs类实现rsa加密与解密</A><BR>
<LI><A
href="http://www.aspsky.net/article/list.asp?id=2774">给大家一个新的加密方法,C#的</A><BR>
<LI><A
href="http://www.aspsky.net/article/list.asp?id=2638">一套加解密字符串的函数</A><BR>
<LI><A
href="http://www.aspsky.net/article/list.asp?id=2637">一段加密函数(base64)</A><BR>
<LI><A
href="http://www.aspsky.net/article/list.asp?id=2636">一段加密函数</A><BR>
<LI><A
href="http://www.aspsky.net/article/list.asp?id=2613">MD5加密的javascript实现例子</A><BR></LI></TD></TR>
<TR>
<TD colSpan=2 height=7></TD></TR></TBODY></TABLE>
<TD bgColor=#297dff width=1> </TD></TR></TBODY></TABLE>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=755>
<TBODY>
<TR>
<TD bgColor=#297dff height=1><SPACER type="block"
width="1"></TD></TR></TBODY></TABLE>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=755>
<TBODY>
<TR>
<TD align=middle height=30></TD></TR></TBODY></TABLE>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=755>
<TBODY>
<TR>
<TD align=middle class=p2 width="100%">
<TABLE border=0 cellPadding=0 cellSpacing=0 width=755>
<TBODY>
<TR>
<TD align=middle class=p2 width="100%">
<P align=center><A
href="http://www.aspsky.net/produce/index.asp">客户服务</A> -- <A
href="http://www.aspsky.net/aspads.asp">广告合作</A> -- <A
href="http://www.aspsky.net/about.asp">关于本站</A> -- <A
href="http://www.aspsky.net/tell.asp">联系方法</A><BR><BR>动网先锋版权所有 <FONT
face=Verdana, size=1 Arial, Helvetica, sans-serif>Copyright ©
2000-2001 <B>AspSky<FONT color=#cc0000>.Net</FONT></B>, All Rights
Reserved .</FONT>
</P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></CENTER></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -