Când semănăm orice fel de PRNG, este posibil să avem date neuniforme în entropia sa. De exemplu, poate singura noastră sursă de aleatorietate criptografic sigură este un set de UUID aleatoriu sub formă de șir. Cu toate acestea, în majoritatea implementărilor PRNG, dorim ca aleatoria noastră să fie uniformă și de dimensiune fixă. Pentru a obține asta, avem nevoie de un fel de a distila intrarea în dimensiunea corespunzătoare, iar o funcție hash este o modalitate ușoară de a face asta.
Când avem un PRNG non-criptografic, intrarea furnizată de utilizator poate fi adesea de orice dimensiune și este adesea util să îi permitem utilizatorului să furnizeze o sămânță arbitrară. De exemplu, unele jocuri video vă permit să adăugați PRNG-ul lor cu text arbitrar pentru a reda același joc, iar asta ar trebui să fie distilat într-o intrare adecvată, pentru care o funcție hash este potrivită. Sarea în acest caz nu ar fi la fel de utilă, deoarece scopul este de a produce un rezultat determinist.
Când folosim un CSPRNG, algoritmul pe care îl folosim este determinist, dar dorim să-l însămânțăm cu intrări de entropie suficientă pentru a ne asigura că rezultatul său este de neghicit. Adică, scopul nostru este ieșirea nedeterministă. Unele modele aleg să forțeze intrările să fie de entropie uniformă, dar majoritatea modelelor folosesc un fel de funcție de derivare, cum ar fi cea folosită de CTR_DRBG, pentru a permite intrări neuniforme. Uneori, acești algoritmi se bazează pe o funcție hash, iar uneori nu sunt. De exemplu, CTR_DRBG folosește o funcție de derivare bazată pe cifr-bloc pentru a face întregul algoritm implementabil doar cu o implementare AES. HMAC_DRBG folosește HMAC în acest rol, care se bazează pe hash.
Design-urile DRBG permit utilizarea unui șir de sare sau de personalizare și este adesea recomandat. O sare fixă sau non-aleatorie nu va îmbunătăți securitatea dacă există o entropie insuficientă, deoarece presupunem că sarea este publică, dar există contexte în care poate fi utilă, cum ar fi dacă mai multe DRBG-uri trebuie să fie însămânțate din aceleași intrări de entropie.
Există unele cazuri în care folosim un design CSPRNG pentru o ieșire deterministă care nu se poate distinge de aleatoriu, iar sarea este utilă acolo. De exemplu, în RFC 6979, care descrie DSA și ECDSA deterministe, folosim un HMAC_DRBG pentru a crea valoarea aleatorie $ k $. Cheia privată este intrarea noastră de entropie, iar hash-ul mesajului este sarea, iar ambele sunt necesare pentru securitate.