Cred că aceasta este o problemă XY și de fapt ar trebui postată la Software Engineering SE. Scopul descris în OP, generarea de ID-uri de utilizator, poate fi rezolvat fără nicio criptografie.
1. Scalare
Scalare este relevantă atunci când sarcina poate crește în mod esențial într-un timp scurt. Dar un nou ID de utilizator este necesar doar pentru utilizatorii noi. În mod normal, un utilizator ar avea nevoie de 1 până la 5 minute pentru înregistrare. Astfel, nu ați avea mai mult de 1 ID nou per utilizator pe minut.
Multe baze de date oferă generatoare de ID. PostreSQL, MariaDB, Oracle oferă generatoare numite „secvențe”. MySQL oferă un ID autoincremental. Nu numai că este rapid atunci când este utilizat simplu, dar aceste baze de date oferă o optimizare suplimentară a performanței, cum ar fi grupuri de ID-uri. Platforme precum Java și C# se integrează bine cu aceste generatoare de ID. Practic, generarea unui nou ID înseamnă doar incrementarea unui număr întreg, iar cererile de bază de date sunt necesare foarte rare.
Exemplu: Să presupunem că utilizați PostgreSQL și secvența cu un grup de 10 000 de ID-uri.Să presupunem că cererea de la aplicație către baza de date pentru a reîmprospăta intervalul de pool durează 10 ms. Astfel, puteți genera 1 000 000 de ID-uri noi pe secundă pentru fiecare instanță de aplicație (adică per nod de cluster, per pod Kubernetes sau similar). Acest generator va produce în 2 ore atâtea ID-uri câte oameni există în întreaga lume.
Evident, dacă se folosește un astfel de generator standard de ID de utilizator, nu va fi un blocaj.
2. Scurtarea
Câte date veți stoca per utilizator? 1K, 10K, 100K? Să presupunem că aveți 1.000 de date per utilizator. Să presupunem că aveți la fel de mulți utilizatori ca Facebook sau Twitter. Astfel, 4 octeți pentru ID vor fi suficienți. Trunchierea SHA-256 de la 32 la 4 octeți economisește 28 de octeți per utilizator, economii de stocare cu mai puțin de 3%. Astfel, complexitatea de a găsi un algoritm pentru transformarea lui SHA-256 la 4 octeți fără multe coliziuni, eforturile de a-l implementa corect, eforturile de a implementa manipularea pentru cazurile în care apar coliziuni, eforturile de remediere a erorilor și, astfel, costurile totale. a unei astfel de soluții poate fi mult mai mare decât costurile de 3% din stocarea economisită. Calculează-l și apoi vei ști dacă are sens în cazul tău.