Python Forensics - Funzione hash
UN hash functionè definita come la funzione che mappa su una grande quantità di dati un valore fisso con una lunghezza specificata. Questa funzione garantisce che lo stesso input restituisca lo stesso output, che è effettivamente definito come somma hash. La somma hash include una caratteristica con informazioni specifiche.
Questa funzione è praticamente impossibile da ripristinare. Pertanto, qualsiasi attacco di terze parti come l'attacco di forza bruta è praticamente impossibile. Inoltre, viene chiamato questo tipo di algoritmoone-way cryptographic algorithm.
Una funzione hash crittografica ideale ha quattro proprietà principali:
- Deve essere facile calcolare il valore hash per un dato input.
- Deve essere impossibile generare l'input originale dal suo hash.
- Non deve essere possibile modificare l'input senza cambiare l'hash.
- Non deve essere possibile trovare due diversi input con lo stesso hash.
Esempio
Considera il seguente esempio che aiuta a far corrispondere le password utilizzando caratteri in formato esadecimale.
import uuid
import hashlib
def hash_password(password):
# userid is used to generate a random number
salt = uuid.uuid4().hex #salt is stored in hexadecimal value
return hashlib.sha256(salt.encode() + password.encode()).hexdigest() + ':' + salt
def check_password(hashed_password, user_password):
# hexdigest is used as an algorithm for storing passwords
password, salt = hashed_password.split(':')
return password == hashlib.sha256(salt.encode()
+ user_password.encode()).hexdigest()
new_pass = raw_input('Please enter required password ')
hashed_password = hash_password(new_pass)
print('The string to store in the db is: ' + hashed_password)
old_pass = raw_input('Re-enter new password ')
if check_password(hashed_password, old_pass):
print('Yuppie!! You entered the right password')
else:
print('Oops! I am sorry but the password does not match')
Diagramma di flusso
Abbiamo spiegato la logica di questo programma con l'aiuto del seguente diagramma di flusso:
Produzione
Il nostro codice produrrà il seguente output:
La password inserita due volte corrisponde alla funzione hash. Ciò garantisce che la password inserita due volte sia accurata, il che aiuta a raccogliere dati utili e salvarli in un formato crittografato.