elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Entendiendo y traduciendo el pseudocódigo de la funcion para calcular hmac
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Entendiendo y traduciendo el pseudocódigo de la funcion para calcular hmac  (Leído 4,193 veces)
Carloswaldo
Traductor
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.747


Nos reservamos el derecho de ban.


Ver Perfil WWW
Entendiendo y traduciendo el pseudocódigo de la funcion para calcular hmac
« en: 18 Julio 2009, 20:59 pm »

Bueno pues me he puesto a tratar de comprender y traducir el pseudocódigo que aparece en wikipedia de la función para calcular hmac, osea este:

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
  1. Function hmac(cadena As String, llave() As String)
  2.    Dim key As String
  3.    key = ""
  4.    For j = 0 To UBound(llave())
  5.        key = key & llave(I)
  6.    Next j
  7.    Dim a As New clsSHA
  8.    Dim opad(&H5C * &H200), ipad(&H36 * &H200)
  9.    'opad = (&H5C * &H200)
  10.    'ipad = (&H36 * &H200)
  11.    If Len(key) > &H200 Then
  12.        key = a.SHA1(key)
  13.    End If
  14.    For I = 0 To Len(key)
  15.        ipad(I) = ipad(I) Xor llave(I)
  16.        opad(I) = opad(I) Xor llave(I)
  17.    Next I
  18.    hmac = a.SHA1(opad & a.SHA1(ipad & cadena))
  19. 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. :)


En línea

cobein


Desconectado Desconectado

Mensajes: 759



Ver Perfil WWW
Re: Entendiendo y traduciendo el pseudocódigo de la funcion para calcular hmac
« Respuesta #1 en: 18 Julio 2009, 22:01 pm »

opad e ipad parecen byte arrays, el tamano es valor * blocksize, blocksize es el mismo que se usa en el hash.


En línea

http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.
el_c0c0


Desconectado Desconectado

Mensajes: 307


Ver Perfil
Re: Entendiendo y traduciendo el pseudocódigo de la funcion para calcular hmac
« Respuesta #2 en: 18 Julio 2009, 23:03 pm »

no se si va al caso pero fijate esto:

primer item:
For I = 0 To Len(key) ' aca deberia ir -1

segundo item:
hmac = a.SHA1(opad & a.SHA1(ipad & cadena)) ' opad e ipad son arrays, deberias traducirlo a un string (con strconv) para poder llamar a esa funcion

saludos
En línea

'-     coco
"Te voy a romper el orto"- Las hemorroides
Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: Entendiendo y traduciendo el pseudocódigo de la funcion para calcular hmac
« Respuesta #3 en: 18 Julio 2009, 23:31 pm »

Tambien fijate porque llamas a la variable "I" en el primer for.
En línea

Adrian Desanti
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
metodo de newton rapson para calcular las raices de una funcion con n grado
Programación C/C++
kiara_luna 1 16,743 Último mensaje 30 Septiembre 2011, 01:45 am
por kiara_luna
Función para calcular los números de Fibonacci
Programación C/C++
Caster 4 1,962 Último mensaje 18 Mayo 2013, 14:00 pm
por Caster
calcular funcion edad con funcion fecha de nacimiento « 1 2 »
Programación C/C++
dragonlady 12 19,420 Último mensaje 28 Septiembre 2015, 22:37 pm
por 0xFer
Programa para practicas en pseudocodigo
Programación General
ElPela2019 2 847 Último mensaje 3 Abril 2019, 18:40 pm
por ElPela2019
Entendiendo una función
Programación C/C++
codX 2 1,428 Último mensaje 26 Diciembre 2019, 16:53 pm
por codX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines