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?