sql >> Databasteknik >  >> RDS >> PostgreSQL

Vilket är det rekommenderade sättet att kryptera användarlösenord i en databas?

Använd inte SHA1 eller SHA256 , som de flesta andra föreslår. Använd absolut inte MD5 .

SHA1/256 och MD5 är båda designade för att skapa kontrollsummor av filer och strängar (och andra datatyper, om det behövs). På grund av detta är de utformade för att vara så snabba som möjligt, så att kontrollsumman är snabb att generera.

Denna snabba hastighet gör det mycket lättare att bruteforce lösenord, eftersom ett välskrivet program lätt kan generera tusentals hash varje sekund.

Använd istället en långsam algoritm som är speciellt utformad för lösenord. De är designade för att ta lite längre tid att generera, med fördelen att bruteforce-attacker blir mycket svårare. På grund av detta blir lösenorden mycket säkrare.

Du kommer inte att uppleva några betydande prestandanackdelar om du bara tittar på att kryptera enskilda lösenord ett i taget, vilket är den normala implementeringen av att lagra och kontrollera lösenord. Det är bara i bulk där den verkliga skillnaden är.

Jag personligen gillar bcrypt. Det borde finnas en Perl-version av den, eftersom en snabb Google-sökning gav flera möjliga matchningar.



  1. MySQL vs PostgreSQL för webbapplikationer

  2. Version vs Distrib-nummer för MySQL

  3. I SQL-server, hur kan jag fråga en Oracle Timestamp-kolumn över en länkad serveranslutning?

  4. Får fel när en vy skapas i Oracle DB