bCrypt’s javadoc ha questo codice per come crittografare una password:
String pw_hash = BCrypt.hashpw(plain_password, BCrypt.gensalt());
Per verificare se una password in chiaro corrisponde a una che è stata precedentemente sottoposta a hash, usa il metodo checkpw:
if (BCrypt.checkpw(candidate_password, stored_hash)) System.out.println("It matches"); else System.out.println("It does not match");
Questi frammenti di codice implicano che il sale generato casualmente viene gettato via. È questo il caso, o si tratta solo di uno snippet di codice fuorviante?
Il sale è incorporato nell’hash (codificato in un formato in stile base64).
Ad esempio, nelle tradizionali password Unix il sale è stato memorizzato come i primi due caratteri della password. I caratteri rimanenti rappresentano il valore di hash. La funzione checker lo sa e tira l’hash a parte per far uscire il sale.