您现在的位置是:网站首页> 编程资料编程资料

ASP 改良版MD5、SHA256多重加密类(二次及多次)_应用技巧_

2023-05-25 218人已围观

简介 ASP 改良版MD5、SHA256多重加密类(二次及多次)_应用技巧_

目前可实现:MD5算法、SHA256算法、先MD5后SHA256、先SHA256后MD5、两次MD5、两次SHA256、前8位MD5算法后8位SHA256算法、前8位SHA256算法后8位MD5算法、取密码最后一个字符的AscW值与8的余数作为加密方案系数、16位MD5加密、32位MD5加密、8位SHA256加密、16位SHA256加密、24位SHA256加密、32位SHA256加密、40位SHA256加密、48位SHA256加密、56位SHA256加密、64位SHA256加密等算法,看过源码之后,更可以自定义更多加密组合及加密算法,跟暴力破解MD5算法说拜拜吧~~
cls_Encrypt.asp 源码:
复制代码 代码如下:

<%
Private Const BITS_TO_A_BYTE = 8
Private Const BYTES_TO_A_WORD = 4
Private Const BITS_TO_A_WORD = 32
Class Cls_Encrypt
Private MD5_m_lOnBits(30)
Private MD5_m_l2Power(30)
Private SHA256_m_lOnBits(30)
Private SHA256_m_l2Power(30)
Private SHA256_K(63)
Private Sub Class_Initialize
MD5_m_lOnBits(0) = CLng(1)
MD5_m_lOnBits(1) = CLng(3)
MD5_m_lOnBits(2) = CLng(7)
MD5_m_lOnBits(3) = CLng(15)
MD5_m_lOnBits(4) = CLng(31)
MD5_m_lOnBits(5) = CLng(63)
MD5_m_lOnBits(6) = CLng(127)
MD5_m_lOnBits(7) = CLng(255)
MD5_m_lOnBits(8) = CLng(511)
MD5_m_lOnBits(9) = CLng(1023)
MD5_m_lOnBits(10) = CLng(2047)
MD5_m_lOnBits(11) = CLng(4095)
MD5_m_lOnBits(12) = CLng(8191)
MD5_m_lOnBits(13) = CLng(16383)
MD5_m_lOnBits(14) = CLng(32767)
MD5_m_lOnBits(15) = CLng(65535)
MD5_m_lOnBits(16) = CLng(131071)
MD5_m_lOnBits(17) = CLng(262143)
MD5_m_lOnBits(18) = CLng(524287)
MD5_m_lOnBits(19) = CLng(1048575)
MD5_m_lOnBits(20) = CLng(2097151)
MD5_m_lOnBits(21) = CLng(4194303)
MD5_m_lOnBits(22) = CLng(8388607)
MD5_m_lOnBits(23) = CLng(16777215)
MD5_m_lOnBits(24) = CLng(33554431)
MD5_m_lOnBits(25) = CLng(67108863)
MD5_m_lOnBits(26) = CLng(134217727)
MD5_m_lOnBits(27) = CLng(268435455)
MD5_m_lOnBits(28) = CLng(536870911)
MD5_m_lOnBits(29) = CLng(1073741823)
MD5_m_lOnBits(30) = CLng(2147483647)
MD5_m_l2Power(0) = CLng(1)
MD5_m_l2Power(1) = CLng(2)
MD5_m_l2Power(2) = CLng(4)
MD5_m_l2Power(3) = CLng(8)
MD5_m_l2Power(4) = CLng(16)
MD5_m_l2Power(5) = CLng(32)
MD5_m_l2Power(6) = CLng(64)
MD5_m_l2Power(7) = CLng(128)
MD5_m_l2Power(8) = CLng(256)
MD5_m_l2Power(9) = CLng(512)
MD5_m_l2Power(10) = CLng(1024)
MD5_m_l2Power(11) = CLng(2048)
MD5_m_l2Power(12) = CLng(4096)
MD5_m_l2Power(13) = CLng(8192)
MD5_m_l2Power(14) = CLng(16384)
MD5_m_l2Power(15) = CLng(32768)
MD5_m_l2Power(16) = CLng(65536)
MD5_m_l2Power(17) = CLng(131072)
MD5_m_l2Power(18) = CLng(262144)
MD5_m_l2Power(19) = CLng(524288)
MD5_m_l2Power(20) = CLng(1048576)
MD5_m_l2Power(21) = CLng(2097152)
MD5_m_l2Power(22) = CLng(4194304)
MD5_m_l2Power(23) = CLng(8388608)
MD5_m_l2Power(24) = CLng(16777216)
MD5_m_l2Power(25) = CLng(33554432)
MD5_m_l2Power(26) = CLng(67108864)
MD5_m_l2Power(27) = CLng(134217728)
MD5_m_l2Power(28) = CLng(268435456)
MD5_m_l2Power(29) = CLng(536870912)
MD5_m_l2Power(30) = CLng(1073741824)
SHA256_m_lOnBits(0) = CLng(1)
SHA256_m_lOnBits(1) = CLng(3)
SHA256_m_lOnBits(2) = CLng(7)
SHA256_m_lOnBits(3) = CLng(15)
SHA256_m_lOnBits(4) = CLng(31)
SHA256_m_lOnBits(5) = CLng(63)
SHA256_m_lOnBits(6) = CLng(127)
SHA256_m_lOnBits(7) = CLng(255)
SHA256_m_lOnBits(8) = CLng(511)
SHA256_m_lOnBits(9) = CLng(1023)
SHA256_m_lOnBits(10) = CLng(2047)
SHA256_m_lOnBits(11) = CLng(4095)
SHA256_m_lOnBits(12) = CLng(8191)
SHA256_m_lOnBits(13) = CLng(16383)
SHA256_m_lOnBits(14) = CLng(32767)
SHA256_m_lOnBits(15) = CLng(65535)
SHA256_m_lOnBits(16) = CLng(131071)
SHA256_m_lOnBits(17) = CLng(262143)
SHA256_m_lOnBits(18) = CLng(524287)
SHA256_m_lOnBits(19) = CLng(1048575)
SHA256_m_lOnBits(20) = CLng(2097151)
SHA256_m_lOnBits(21) = CLng(4194303)
SHA256_m_lOnBits(22) = CLng(8388607)
SHA256_m_lOnBits(23) = CLng(16777215)
SHA256_m_lOnBits(24) = CLng(33554431)
SHA256_m_lOnBits(25) = CLng(67108863)
SHA256_m_lOnBits(26) = CLng(134217727)
SHA256_m_lOnBits(27) = CLng(268435455)
SHA256_m_lOnBits(28) = CLng(536870911)
SHA256_m_lOnBits(29) = CLng(1073741823)
SHA256_m_lOnBits(30) = CLng(2147483647)
SHA256_m_l2Power(0) = CLng(1)
SHA256_m_l2Power(1) = CLng(2)
SHA256_m_l2Power(2) = CLng(4)
SHA256_m_l2Power(3) = CLng(8)
SHA256_m_l2Power(4) = CLng(16)
SHA256_m_l2Power(5) = CLng(32)
SHA256_m_l2Power(6) = CLng(64)
SHA256_m_l2Power(7) = CLng(128)
SHA256_m_l2Power(8) = CLng(256)
SHA256_m_l2Power(9) = CLng(512)
SHA256_m_l2Power(10) = CLng(1024)
SHA256_m_l2Power(11) = CLng(2048)
SHA256_m_l2Power(12) = CLng(4096)
SHA256_m_l2Power(13) = CLng(8192)
SHA256_m_l2Power(14) = CLng(16384)
SHA256_m_l2Power(15) = CLng(32768)
SHA256_m_l2Power(16) = CLng(65536)
SHA256_m_l2Power(17) = CLng(131072)
SHA256_m_l2Power(18) = CLng(262144)
SHA256_m_l2Power(19) = CLng(524288)
SHA256_m_l2Power(20) = CLng(1048576)
SHA256_m_l2Power(21) = CLng(2097152)
SHA256_m_l2Power(22) = CLng(4194304)
SHA256_m_l2Power(23) = CLng(8388608)
SHA256_m_l2Power(24) = CLng(16777216)
SHA256_m_l2Power(25) = CLng(33554432)
SHA256_m_l2Power(26) = CLng(67108864)
SHA256_m_l2Power(27) = CLng(134217728)
SHA256_m_l2Power(28) = CLng(268435456)
SHA256_m_l2Power(29) = CLng(536870912)
SHA256_m_l2Power(30) = CLng(1073741824)
SHA256_K(0) = &H428A2F98
SHA256_K(1) = &H71374491
SHA256_K(2) = &HB5C0FBCF
SHA256_K(3) = &HE9B5DBA5
SHA256_K(4) = &H3956C25B
SHA256_K(5) = &H59F111F1
SHA256_K(6) = &H923F82A4
SHA256_K(7) = &HAB1C5ED5
SHA256_K(8) = &HD807AA98
SHA256_K(9) = &H12835B01
SHA256_K(10) = &H243185BE
SHA256_K(11) = &H550C7DC3
SHA256_K(12) = &H72BE5D74
SHA256_K(13) = &H80DEB1FE
SHA256_K(14) = &H9BDC06A7
SHA256_K(15) = &HC19BF174
SHA256_K(16) = &HE49B69C1
SHA256_K(17) = &HEFBE4786
SHA256_K(18) = &HFC19DC6
SHA256_K(19) = &H240CA1CC
SHA256_K(20) = &H2DE92C6F
SHA256_K(21) = &H4A7484AA
SHA256_K(22) = &H5CB0A9DC
SHA256_K(23) = &H76F988DA
SHA256_K(24) = &H983E5152
SHA256_K(25) = &HA831C66D
SHA256_K(26) = &HB00327C8
SHA256_K(27) = &HBF597FC7
SHA256_K(28) = &HC6E00BF3
SHA256_K(29) = &HD5A79147
SHA256_K(30) = &H6CA6351
SHA256_K(31) = &H14292967
SHA256_K(32) = &H27B70A85
SHA256_K(33) = &H2E1B2138
SHA256_K(34) = &H4D2C6DFC
SHA256_K(35) = &H53380D13
SHA256_K(36) = &H650A7354
SHA256_K(37) = &H766A0ABB
SHA256_K(38) = &H81C2C92E
SHA256_K(39) = &H92722C85
SHA256_K(40) = &HA2BFE8A1
SHA256_K(41) = &HA81A664B
SHA256_K(42) = &HC24B8B70
SHA256_K(43) = &HC76C51A3
SHA256_K(44) = &HD192E819
SHA256_K(45) = &HD6990624
SHA256_K(46) = &HF40E3585
SHA256_K(47) = &H106AA070
SHA256_K(48) = &H19A4C116
SHA256_K(49) = &H1E376C08
SHA256_K(50) = &H2748774C
SHA256_K(51) = &H34B0BCB5
SHA256_K(52) = &H391C0CB3
SHA256_K(53) = &H4ED8AA4A
SHA256_K(54) = &H5B9CCA4F
SHA256_K(55) = &H682E6FF3
SHA256_K(56) = &H748F82EE
SHA256_K(57) = &H78A5636F
SHA256_K(58) = &H84C87814
SHA256_K(59) = &H8CC70208
SHA256_K(60) = &H90BEFFFA
SHA256_K(61) = &HA4506CEB
SHA256_K(62) = &HBEF9A3F7
SHA256_K(63) = &HC67178F2
End Sub
Private Sub Class_Terminate
End Sub
'字符传转换数组函数
Private Function ConvertToWordArray(byVal sMessage)
Dim lMessageLength
Dim lNumberOfWords
Dim lWordArray()
Dim lBytePosition
Dim lByteCount
Dim lWordCount
Const MODULUS_BITS = 512
Const CONGRUENT_BITS = 448
lMessageLength = Len(sMessage)
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
lWordArray(lWordCount) = lWordArray(lWordCount) or LShift(Asc(Mid(sMessage, lByteCount + 1, 1)), lBytePosition)
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 LShift(byVal lValue, byVal 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 MD5_m_l2Power(31 - iShiftBits)) Then
LShift = ((lValue And MD5_m_lOnBits(31 - (iShiftBits + 1))) * MD5_m_l2Power(iShiftBits)) or &H80000000
Else
LShift = ((lValue And MD5_m_lOnBits(31 - iShiftBits)) * MD5_m_l2Power(iShiftBits))
End If
End Function
'字符串右移位主函数
Private Function RShift(byVal lValue, byVal 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) \ MD5_m_l2Power(iShiftBits)
If (lValue And &H80000000) Then
RShift = (RShift or (&H40000000 \ MD5_m_l2Power(iShiftBits - 1)))
End If
End Function
'字符串偏移转换,通过左右移位函数实现
Private Function RotateLeft(byVal lValue, byVal iShiftBits)
RotateLeft = LShift(lValue, iShiftBits) or RShift(lValue, (32 - iShiftBits))
End Func

-六神源码网