Red de conocimiento informático - Computadora portátil - Problemas con la función de cifrado y descifrado ASP

Problemas con la función de cifrado y descifrado ASP

No estoy seguro de qué quiere hacer con el archivo md5. . . . . . , no estás intentando inventar un algoritmo md6...

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)))

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

Si lResultado y &H40000000 Entonces

lResultado = lResultado Xor &HC0000000 Xor lX8 Xor lY8

Else

lResultado = lResultado

Else

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)

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

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

%>.