Código:
function hmac (key, message)
opad = [0x5c * blocksize] // Where blocksize is that of the underlying hash function
ipad = [0x36 * blocksize]
if (length(key) > blocksize) then
key = hash(key) // keys longer than blocksize are shortened
end if
for i from 0 to length(key) - 1 step 1
ipad[i] = ipad[i] ⊕ key[i] // Where ⊕ is exclusive or (XOR)
opad[i] = opad[i] ⊕ key[i]
end for
return hash(opad ++ hash(ipad ++ message)) // Where ++ is concatenation
end function
Y me ha quedado esto:
Código
Function hmac(cadena As String, llave() As String) Dim key As String key = "" For j = 0 To UBound(llave()) key = key & llave(I) Next j Dim a As New clsSHA Dim opad(&H5C * &H200), ipad(&H36 * &H200) 'opad = (&H5C * &H200) 'ipad = (&H36 * &H200) If Len(key) > &H200 Then key = a.SHA1(key) End If For I = 0 To Len(key) ipad(I) = ipad(I) Xor llave(I) opad(I) = opad(I) Xor llave(I) Next I hmac = a.SHA1(opad & a.SHA1(ipad & cadena)) End Function
Le he hecho tantos cambios que ya no se donde mismo está el error. xD Las únicas 2 líneas de código que no se que significan son las dos primeras.
Código:
opad = [0x5c * blocksize] // Where blocksize is that of the underlying hash function
ipad = [0x36 * blocksize]
Se que opad y ipad tienen que ser arrays, 0x5c y 0x36 son valores hexadecimales fijos, y blocksize es un valor fijo (512) que en hex sería 200. Lo que no se es que significan esas lineas, como tengo que declarar esos arrays y de que tamaño tienen que ser.
Algún alma caritativa se apiade de mí y me pueda ayudar un poco.