Sto cercando di capire l'algoritmo di hashing della password di Oracle 11g, ho trovato questo link che spiega come è fatto, tuttavia, ho una certa confusione su come dicono che è fatto. Secondo questo link va così:
- La stringa salt casuale di 10 byte viene generata da oracle
- La password e la stringa salina diventano una sola
- Oracle esegue la stringa tramite un algoritmo SHA1
- L'output è
S:<HASH(password+salt)><SALT>
Quindi ad esempio:
>>> 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
>>>
Sono corretto assumendo che questo è il modo in cui Oracle 11g esegue l'hashing?