Problemas con la función de cifrado y descifrado ASP
Debería verse así
RShift = (lValue And &H7FFFFFFE) \ m_l2Power(iShiftBits)
Su escritura original debe haberle indicado que la declaración no era terminado.
El siguiente es el contenido completo de md5.asp: Función final
Función privada RShift(lValue, iShiftBits)
Si iShiftBits = 0 entonces
RShift = lValue
Salir de la función
ElseIf iShiftBits = 31 Entonces
Si lValue y &H80000000 Entonces
RShift = 1
Else
RShift = 0
Finalizar si
Salir de la función
ElseIf iShiftBits < 0 O iShiftBits > 31 Entonces
Err.Raise 6
Finalizar si
RShift = (lValue And &H7FFFFFFE) \ m_ l2Power(iShiftBits)
Si (lValue y &H80000000) Entonces
RShift = (RShift O (&.H7FFFFFFE) \ m_ l2Power(iShiftBits)
Err; H40000000 \ m_l2Power(iShiftBits - 1))) p>
Finalizar si
Finalizar función
Función privada RotateLeft(lValue, iShiftBits)
RotarLeft = LShift(lValue, iShiftBits) o RShift ( lValue , (32 - iShiftBits))
Función final
Función privada AddUnsigned(lX, lY)
Dim lX4
Dim lY4
Dim lX8
Dim lY8
Dim lResult
lX8 = lX Y & > lY8 = lY Y &H80000000
lX4 = lX Y &H40000000
lY4 = lY Y &H40000000
lResultado = (lX Y &H3FFFFFFF) + (lY y &H3FFFFFFF)
Si lX4 y lY4 entonces
lResultado = lResultado Xor &H80000000 Xor lX8 Xor lY8
De lo contrario, lX4 o lY4 entonces p>
Si lResultado y &H40000000 Entonces
lResultado = lResultado Xor &HC0000000 Xor lX8 Xor lY8
Else
lResultado = lResultado
Else p>
lResultado =
lResultado
md5_F = (x e y) o ((no x) y z)
Función final
Función privada md5_G(x, y, z)
md5_G = (x y z) o (y y (no z))
Función final
Función privada md5_H(x, y, z)< / p>
md5_H = ( x y Xor (x Or (Not z)))
Función final
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
Sub privado 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
Sub privado md5_HH(a, b, c, d, x, s, ac) p>
a = AddUnsigned(a, AddUnsigned( AddUnsigned(md5_H(b, c, d), x), ac))
a = RotateLeft(a, s)
a = AddUnsigned(a, b)
End Sub
Privado Sub md5_II(a, c, d, x, s, ac)
Privado Sub md5_II(a, b, c, d , x, s, ac)
Sub privado 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
Función privada ConvertToWordArray(sMessage)
Dim lMessageLength
Dim lNumberOfWords
Dim lWordArray()
Dim lBytePosition
DimlByteCount
Dim lWordCount
Const MO
DULUS_BITS = 512
Const CONGRUENT_BITS = 448
lMessageLength = Len(sMessage)
lNumberOfWords = (((lMessageLength + ((MODULUS_BITS - CONGRUENT_BITS))))
lNumberOfWords = (((lMessageLength + ((MODULUS_BITS - CONGRUENT_BITS))))) Co-bits) (bits a byte))\ (modulus_bits \ bits_to_a_byte))+ 1) * (MODULUS_BITS \ BITS_TO_A_WORD)
ReDim lWordArray(lNumberOfWords - 1)
lBytePosition = 0
lByteCount = 0
Hacer hasta lByteCount >= lMessageLength p >
lWordCount = lByteCount \ BYTES_TO_A_WORD
lBytePosition = (lByteCount Mod BYTES_TO _A_WORD) * BITS_TO_A_BYTE
lWordArray(lWordCount) = lWordArray(lWordCount) O LShift(Asc(Mid( sMessage, lByteCount + 1, 1)), lBytePosition)
lByteCount = lByteCount + 1
Bucle
lWordCount = lByteCount \ BYTES_TO_A_WORD
lBytePosition= ( lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE
lWordArray(lWordCount) = lWordArray(lWordCount) O LShift(&H80, lBytePosition)
lWordArray(lNumberOfWords - 2) = LShift ( lMessageLength, 3)
lWordArray(lNumberOfWords - 1) = RShift(lMessageLength, 29)
ConvertToWordArray = lWordArray
Fin de función
Función privada WordToHex(lValue)
Dim lByte
Dim lCount
Para lCount = 0 a 3
lByte = RShift(lValue , lCount * BITS_TO_A_BYTE) y m_lOnBits(BITS_TO_A_BYTE - 1)
WordToHex = WordToHex & Right("0") & Hex(lByte), 2)
Siguiente
Función final
Función pública MD5(sMessage)
m_lOnBi
ts(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)
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, & p> 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)
Siguiente
MD5 = LCase(WordToHex(a) & WordToHex(b) & WordToHex(c) &. WordToHex(d))
'MD5 = LCase(WordToHex(b) & WordToHex(c)) 'Lo recorté para que se ajuste a una contraseña de base de datos de 16 bytes:D
Fin de función
%>.
<%=md5(123456123456030)%>
Función final
%>.