Ecco un esempio di salatura e hashing di una determinata password in python.equivalente sale e hash in golang
import scrypt
import os
# Length of salt
PW_SALT_BYTES = 32
# Length of scrypt hash of passwords
PW_HASH_BYTES = 64
# test password
password = "hello"
salt = os.urandom(PW_SALT_BYTES).encode('hex')
# hash(password, salt, N=1 << 14, r=8, p=1, buflen=64)
hashed_password = scrypt.hash(str(password), salt.decode('hex'), buflen=PW_HASH_BYTES).encode('hex')
print(hashed_password)
Il che ci darebbe un hash e la stringa salate in cambio: -
4d1da45b401961fccb10e094ecd70ec79510f05483ca293d300bbd0024e35866ca39fe09fbc15f83a359431021a1ed9644f7d2b871b357e37a186300877edb18
Come potrei implementare questo in golang?
Questo appare come quello che stavo cercando pure ma sto equivoco qualcosa perché l'output risultante 'hash' (da golang) fa non corrisponde alla 'hashed_password' stampata nello script python? Stavo pensando che dovrebbero produrre lo stesso risultato poiché entrambe le password di test sono "ciao". –
@CalvinCheng: stavi usando lo stesso sale confrontando le versioni di Python e Go? In caso contrario, è positivo che l'output sia diverso. –
Sì. Stavo anche provando con un sale fisso e non corrispondono. Per l'esempio sopra, hai ragione che non dovrebbero corrispondere perché il sale viene generato casualmente. –