Entendiendo los algoritmos de hashing de contraseña de Oracle 11g

1

Estoy tratando de entender el algoritmo de hash de contraseña de Oracle 11g, encontré este enlace que explica cómo Se hace, sin embargo, tengo cierta confusión sobre cómo dicen que se hace. Según ese enlace va así:

  • La cadena de sal de 10 bytes aleatoria es generada por Oracle
  • La contraseña y la cadena de sal en sí se convierten en una
  • Oracle ejecuta la cadena a través de un algoritmo SHA1
  • La salida es S:<HASH(password+salt)><SALT>

Entonces, por ejemplo:

>>> import hashlib
>>> d = hashlib.sha1()
>>> salt = "test"  # random salt (not 10 bytes)
>>> password = "testing"  # password
>>> password2 = password + salt  # salt and password become one
>>> print password2
testingtest
>>> d.update(password2)  
>>> data = d.hexdigest()  # hexdigest the password string (password+salt)
>>> hash_to_display = "s:{}{}".format(data, salt)  # return s:<HASH(pass+salt)><SALT>
>>> print hash_to_display.upper()
S:6B399DF23C6B76D667F5E043D2DD13407A2245BBTEST
>>> 

¿Tengo razón al suponer que así es como Oracle 11g hace hash?

    
pregunta 13aal 25.06.2017 - 06:46
fuente

1 respuesta

1

Lo que tiene coincide con la documentación que encontré (tanto oficial como no). Lástima, no es tan seguro como podría ser. Incluso si se usa SHA-1 (tal vez para ser compatible con FIPS 140-2), uno podría ejecutar los datos a través de muchas iteraciones para hacer que sea mucho más difícil la fuerza bruta.

    
respondido por el Swashbuckler 26.06.2017 - 00:21
fuente

Lea otras preguntas en las etiquetas