Lösenord ska inte krypteras, de ska hashas. Distinktionen är viktig: ett krypterat lösenord kan avkrypteras med rätt nyckel, medan en hashfunktion är s.k. "one way", det finns inget sätt att återfå indatan. För att kontrollera om en användare skrivit in rätt lösenord så hashar du det denne skriver in och jämför med hashen i databasen. Därav är SHA1 på rätt väg, men den är att anses som "typ knäckt" och bör inte användas i detta syfte.
Hashen ska även saltas med ett slumpat salt för att mitigera bla rainbow table-attacker.
Hashen får heller inte vara för snabb ellet variera i exekveringstid beroende på indata, då är den öppen för timing-attacker.
Summerat: att "spara lösenord" är djävulskt komplicerat och lätt att göra fel. Implementera inget själv, använd istället något vedertaget bibliotek som implementerar bcrypt eller liknande saltad hashfunktion.