یک اشتباه رایج، رمزگذاری (Encryption) رمز عبور است؛ رمزگذاری قابل بازگشت است و اگر کلید لو برود، همهی رمزها لو میروند. رمز عبور باید هش شود، نه رمزگذاری.
چرا MD5 و SHA1 کافی نیستند؟
این الگوریتمها برای سرعت طراحی شدهاند، نه امنیت رمز عبور — دقیقاً همین سرعت به مهاجم اجازه میدهد میلیاردها حدس را در ثانیه امتحان کند (Brute Force با GPU).
الگوریتمهای درست
Argon2، bcrypt و scrypt عمداً کند و «سنگین از نظر حافظه» طراحی شدهاند تا حدسزدن دستهجمعی رمز عملاً غیرممکن یا بسیار پرهزینه شود.
Salt چیست و چرا لازم است؟
یک مقدار تصادفی منحصربهفرد که به هر رمز قبل از هش اضافه میشود، تا دو کاربر با رمز یکسان، هش یکسانی نداشته باشند و از حملات Rainbow Table جلوگیری شود.
برای ذخیره رمز از Argon2، bcrypt یا scrypt استفاده کنید.