sql >> Databasteknik >  >> RDS >> Mysql

Vad är salt när det gäller MYSQL sha1?

Ett salt är ett värde som läggs till ett lösenord (eller annan hemlighet) som du vill hasha på ett sätt. Det betyder att det kan vara före, efter eller någonstans i lösenordet, så länge som dess position och värde är konsekventa för ett givet lösenord.

Vad detta gör är att det mildrar ordboksattacker - i princip ordböcker med vanliga lösenord som är förhaschade utan salt - från att användas för att "gissa" ett enkelriktat lösenord så länge som angriparen inte känner till hashen. Om varje lösenord har olika hash gör det det mycket svårt för en angripare att skapa en ordbok optimerad för att knäcka dina lösenord (de skulle behöva en ordbok för varje separat salt och de skulle också behöva veta var saltet placerades i varje lösenord ).

Naturligtvis för att allt detta ska vara tillämpligt måste en angripare ha hasharna för dina lösenord i första hand. Detta har ingenting att göra med att attackera lösenord genom att gissa dem genom någon inmatningsprompt.

När det gäller MySQL specifikt om du anger ett salt när du hash ett lösenord, se till att du registrerar vad det saltet var någonstans. När en användare sedan försöker autentisera, kombinerar du det inspelade saltvärdet med lösenordet (under samtalet till crypt till exempel) och om den resulterande hashen matchar har de angett rätt lösenord. (Observera att hashningen av ett lösenord inte vid något tillfälle omvänds, alltså på ett sätt.)



  1. Hur får man fram räkningen av varje distinkt värde i en kolumn?

  2. Hur man lägger till tid till ett Datetime-värde i MySQL

  3. Views SELECT innehåller en underfråga i FROM-satsen

  4. Hur man använder MySql på Mac