ā§Ļā§Ē āϜāĻžāύ⧁, ⧍ā§Ļ⧍ā§Ŧ¡5 āĻŽāĻŋāύāĻŋāϟ āĻĒāĻĄāĻŧāϤ⧇

bcrypt āĻŦāύāĻžāĻŽ Argon2: āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻšā§āϝāĻžāĻļāĻŋāĻ‚ āϏ⧇āϟāĻŋāĻ‚āϏ āĻŦ⧇āϛ⧇ āύ⧇āĻ“ā§ŸāĻž

bcrypt āĻŦāύāĻžāĻŽ Argon2 āĻŦā§āϝāĻžāĻ–ā§āϝāĻž: āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āϤ⧁āϞāύāĻž, āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏ āĻ–āϰāϚ āĻāĻŦāĻ‚ āφāϧ⧁āύāĻŋāĻ• āĻ“āϝāĻŧ⧇āĻŦ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āύāĻŋāϰāĻžāĻĒāĻĻ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻŦ⧇āϛ⧇ āύ⧇āĻŦ⧇āύāĨ¤

bcrypt āĻŦāύāĻžāĻŽ Argon2: āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻšā§āϝāĻžāĻļāĻŋāĻ‚ āϏ⧇āϟāĻŋāĻ‚āϏ āĻŦ⧇āϛ⧇ āύ⧇āĻ“ā§ŸāĻž

āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻšā§āϝāĻžāĻļāĻŋāĻ‚ āϕ⧀ āϏāĻŽāĻ¸ā§āϝāĻžāϰ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰ⧇\n\nāĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻšā§āϝāĻžāĻļāĻŋāĻ‚ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄāϕ⧇ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āϏāϰāĻžāϏāϰāĻŋ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āύāĻž āĻ•āϰ⧇āχ āϤāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻžāϰ āϏāĻ•ā§āώāĻŽāϤāĻž āĻĻ⧇āϝāĻŧāĨ¤ āϕ⧇āω āϏāĻžāχāύ āφāĻĒ āĻ•āϰāϞ⧇ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄāϕ⧇ āĻāĻ•āϟāĻŋ āĻ“āϝāĻŧāĻžāύ-āĻ“āϝāĻŧ⧇ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻĒāĻžāĻ āĻžāϝāĻŧ āĻāĻŦāĻ‚ āĻĢāϞāĻžāĻĢāϞ (āĻšā§āϝāĻžāĻļ) āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇āĨ¤ āϞāĻ—āχāύ⧇, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϝ⧇ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āϟāĻžāχāĻĒ āĻ•āϰ⧇āϛ⧇ āϤāĻž āφāĻŦāĻžāϰ āĻšā§āϝāĻžāĻļ āĻ•āϰ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ āĻŽāĻžāύ⧇āϰ āϏāĻ™ā§āϗ⧇ āϤ⧁āϞāύāĻž āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤\n\nāĻāĻ•āϟāĻŋ āĻšā§āϝāĻžāĻļ āĻāύāĻ•ā§āϰāĻŋāĻĒāĻļāύ āύāϝāĻŧāĨ¤ āĻāϟāĻŋāϕ⧇ āĻĄāĻŋāĻ•ā§āϰāĻŋāĻĒā§āϟ āĻ•āϰāĻžāϰ āωāĻĒāĻžāϝāĻŧ āύ⧇āχāĨ¤ āĻāχ āĻ“āϝāĻŧāĻžāύ-āĻ“āϝāĻŧ⧇ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāχ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āĻšā§āϝāĻžāĻļāĻŋāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ•āĻžāϰāĻŖāĨ¤\n\nāϤāĻžāĻšāϞ⧇ āϕ⧇āύ SHA-256 āĻŽāϤ āĻĻā§āϰ⧁āϤ āĻšā§āϝāĻžāĻļ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇āύ āύāĻž? āĻ•āĻžāϰāĻŖ āĻĻā§āϰ⧁āϤāχ āφāĻ•ā§āϰāĻŽāĻŖāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻĒāĻ›āĻ¨ā§āĻĻāĨ¤ āϝāĻĻāĻŋ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āϚ⧁āϰāĻŋ āĻšāϝāĻŧ, āφāĻ•ā§āϰāĻŽāĻŖāĻ•āĻžāϰ⧀āϰāĻž āĻāĻ• āĻāĻ•āϟāĻŋ āĻ•āϰ⧇ āϞāĻ—āχāύ āĻ•āϰ⧇ āĻ…āύ⧁āĻŽāĻžāύ āĻ•āϰ⧇ āύāĻžāĨ¤ āϤāĻžāϰāĻž āϚ⧁āϰāĻŋ āĻ•āϰāĻž āĻšā§āϝāĻžāĻļ āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āĻ…āĻĢāϞāĻžāχāύ⧇ āĻ…āύ⧁āĻŽāĻžāύ āϚāĻžāϞāĻžāϝāĻŧ āĻāĻŦāĻ‚ āϤāĻžāĻĻ⧇āϰ āĻšāĻžāĻ°ā§āĻĄāĻ“āϝāĻŧā§āϝāĻžāϰ⧇āϰ āĻ•ā§āώāĻŽāϤāĻž āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ āĻĻā§āϰ⧁āϤ āĻ…āύ⧁āĻŽāĻžāύ āϚāĻžāϞāĻžāϝāĻŧāĨ¤ GPU āĻĻāĻŋāϝāĻŧ⧇ āĻĻā§āϰ⧁āϤ āĻšā§āϝāĻžāĻļ āĻŦāĻĄāĻŧ āĻĒāϰāĻŋāϏāϰ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤ āĻ…āύāĻ¨ā§āϝ āϏāĻžāĻ˛ā§āϟ āĻĨāĻžāĻ•āϞ⧇āĻ“ āĻāĻ•āϟāĻŋ āĻĻā§āϰ⧁āϤ āĻšā§āϝāĻžāĻļ āĻāĻ–āύāĻ“ āĻŦā§āϰ⧁āϟāĻĢā§‹āĻ°ā§āϏ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϏāĻ¸ā§āϤāĻž āĻšāϝāĻŧāĨ¤\n\nāĻŦāĻžāĻ¸ā§āϤāĻŦāϏāĻŽā§āĻŽāϤ āĻŦā§āϝāĻ°ā§āĻĨāϤāĻž āĻŽā§‹āĻĄāϟāĻž āĻšāϞ⧋: āĻāĻ•āϟāĻŋ āϛ⧋āϟ āĻ“āϝāĻŧ⧇āĻŦ āĻ…ā§āϝāĻžāĻĒ⧇āϰ āχāωāϜāĻžāϰ āĻŸā§‡āĻŦāĻŋāϞ āĻŦā§āϰāĻŋāĻšā§‡ āϚāϞ⧇ āϝāĻžāϝāĻŧāĨ¤ āφāĻ•ā§āϰāĻŽāĻŖāĻ•āĻžāϰ⧀ āχāĻŽā§‡āχāϞ āĻāĻŦāĻ‚ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻšā§āϝāĻžāĻļ āĻĒāĻžāϝāĻŧāĨ¤ āϝāĻĻāĻŋ āϏ⧇āχ āĻšā§āϝāĻžāĻļāϗ⧁āϞ⧋ āĻĻā§āϰ⧁āϤ āĻĢāĻžāĻ‚āĻļāύ āĻĻāĻŋāϝāĻŧ⧇ āϤ⧈āϰāĻŋ āĻšāϝāĻŧ, āϏāĻžāϧāĻžāϰāĻŖ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻāĻŦāĻ‚ āϛ⧋āϟ āĻ­ā§āϝāĻžāϰāĻŋāϝāĻŧ⧇āĻļāύ āĻĻā§āϰ⧁āϤ āϟ⧁āĻŸā§‡ āϝāĻžāϝāĻŧāĨ¤ āϤāĻžāϰāĻĒāϰ āφāĻ•ā§āϰāĻŽāĻŖāĻ•āĻžāϰ⧀ āĻāĻ•āχ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻ…āĻ¨ā§āϝ āϏāĻžāχāĻŸā§‡ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧇ (credential stuffing), āĻŦāĻž āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ⧇āϰ āωāĻšā§āϚ-āĻĒā§āϰāĻŋāĻ­āĻŋāϞ⧇āϜ āĻĢāĻŋāϚāĻžāϰ⧇ āĻĒā§āϰāĻŦ⧇āĻļ⧇āϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧇āĨ¤\n\nāĻāĻ•āϟāĻŋ āĻ­āĻžāϞ⧋ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻšā§āϝāĻžāĻļ āĻ…āύ⧁āĻŽāĻžāύāϕ⧇ āĻŦā§āϝāϝāĻŧāĻŦāĻšā§āϞ āĻ•āϰ⧇ āϤ⧋āϞ⧇āĨ¤ āϞāĻ•ā§āĻˇā§āϝ "āĻ…āϘāĻžāĻ¤ā§āϝ" āύāϝāĻŧ—āϞāĻ•ā§āĻˇā§āϝ āĻšāϞ⧋ "āĻ…āύ⧇āĻ• āϧ⧀āϰ āĻ“ āĻŦā§āϝāϝāĻŧāĻŦāĻšā§āϞ āϝāĻžāϤ⧇ āφāĻ•ā§āϰāĻŽāĻŖ āĻ•āϰāĻž āĻĻāϰāĻ•āĻžāϰāĻŋ āύāĻž āĻšāϝāĻŧāĨ¤"\n\nāĻāĻ•āϟāĻŋ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻšā§āϝāĻžāĻļāĻŋāĻ‚ āϏ⧇āϟāφāĻĒ āĻšāĻ“āϝāĻŧāĻž āωāϚāĻŋāϤ:\n\n- āĻāĻ•āĻĻāĻŋāĻ• āĻĨ⧇āϕ⧇ (āĻ“āϝāĻŧāĻžāύ-āĻ“āϝāĻŧ⧇) āϝāĻžāϚāĻžāχ āĻ•āϰāĻž āϝāĻžāϝāĻŧ, āωāĻ˛ā§āϟāĻžāύ⧋ āϝāĻžāϝāĻŧ āύāĻž\n- āĻĒā§āϰāϤāĻŋ āĻ…āύ⧁āĻŽāĻžāύ āϧ⧀āϰ āĻšāϤ⧇ āĻšāĻŦ⧇\n- āϏāĻŽāĻžāĻ¨ā§āϤāϰāĻžāϞ āĻšāĻžāĻ°ā§āĻĄāĻ“āϝāĻŧā§āϝāĻžāϰ⧇āϰ (āĻŦāĻŋāĻļ⧇āώ āĻ•āϰ⧇ GPU) āϜāĻ¨ā§āϝ āĻŦā§āϝāϝāĻŧāĻŦāĻšā§āϞ āĻšāϤ⧇ āĻšāĻŦ⧇\n- āĻŦāĻžāĻ¸ā§āϤāĻŦ āϞāĻ—āχāύ āĻāĻ–āύāĻ“ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āϞāĻžāĻ—āĻžāϰ āĻŽāϤ⧋ āĻĻā§āϰ⧁āϤ āĻšāϤ⧇ āĻšāĻŦ⧇\n- āϏāĻŽāϝāĻŧ⧇āϰ āϏāĻžāĻĨ⧇ āĻ•āĻ¸ā§āϟ āĻŦāĻžāĻĄāĻŧāĻŋāϝāĻŧ⧇ āύ⧇āĻ“āϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ āĻ…ā§āϝāĻžāĻĄāϜāĻžāĻ¸ā§āĻŸā§‡āĻŦāϞ āĻšāϤ⧇ āĻšāĻŦ⧇\n\n## āĻāĻ• āĻŽāĻŋāύāĻŋāĻŸā§‡ bcrypt āĻāĻŦāĻ‚ Argon2\n\nāϝāĻ–āύ āφāĻĒāύāĻŋ bcrypt āĻŦāύāĻžāĻŽ Argon2 āϤ⧁āϞāύāĻž āĻ•āϰ⧇āύ, āφāĻĒāύāĻŋ āĻŦ⧇āϛ⧇ āύāĻŋāĻšā§āϛ⧇āύ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āϞāĻŋāϕ⧇āϰ āĻĒāϰ⧇ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻ…āύ⧁āĻŽāĻžāύ āϧ⧀āϰ āĻ•āϰāĻŦ⧇āύāĨ¤\n\nbcrypt āĻĒ⧁āϰāύ⧋ āĻāĻŦāĻ‚ āĻŦāĻŋāĻ¸ā§āϤ⧃āϤāĻ­āĻžāĻŦ⧇ āϏāĻžāĻĒā§‹āĻ°ā§āĻŸā§‡āĻĄ āĻ…āĻĒāĻļāύāĨ¤ āĻāϟāĻŋ CPU-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻŦā§āϝāϝāĻŧāĻŦāĻšā§āϞ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻž āĻāĻŦāĻ‚ āĻāϰ āĻāĻ•āϟāĻŋ āĻĒā§āϰāϧāĻžāύ āϟāĻŋāωāύāĻŋāĻ‚ āύāĻžāĻŦāĻŦ āφāϛ⧇: āĻ•āĻ¸ā§āϟ āĻĢā§āϝāĻžāĻ•ā§āϟāϰāĨ¤ āĻāϟāĻŋ "āύāĻŋāĻ°ā§āĻŦāĻŋāϚāĻžāϰ⧇ āĻ­āĻžāϞ⧋"—āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϤ⧇ āϏāĻšāĻœā§‡ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāϝāĻŧ, āĻĄāĻŋāĻĒā§āϞāϝāĻŧ āĻ•āϰāĻž āϏāĻšāϜ āĻāĻŦāĻ‚ āĻĒā§‚āĻ°ā§āĻŦāĻžāύ⧁āĻŽā§‡āϝāĻŧāĨ¤\n\nArgon2 āύāϤ⧁āύ āĻāĻŦāĻ‚ āĻŽā§‡āĻŽāϰāĻŋ-āĻšāĻžāĻ°ā§āĻĄ āĻšāĻ“āϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ āϤ⧈āϰāĻŋāĨ¤ āĻāϟāĻŋ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻ…āύ⧁āĻŽāĻžāύāϕ⧇ āωāĻ˛ā§āϞ⧇āĻ–āϝ⧋āĻ—ā§āϝ āĻĒāϰāĻŋāĻŽāĻžāĻŖ RAM āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϤ⧇ āĻĒāĻžāϰ⧇, āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ CPU āύāϝāĻŧāĨ¤ āĻāϟāĻž āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ•āĻžāϰāĻŖ āφāĻ•ā§āϰāĻŽāĻŖāĻ•āĻžāϰ⧀āϰāĻž āĻĒā§āϰāĻžāϝāĻŧāĻļāχ GPU āĻŦāĻž āĻŦāĻŋāĻļ⧇āώāĻžāϝāĻŧāĻŋāϤ āĻšāĻžāĻ°ā§āĻĄāĻ“āϝāĻŧā§āϝāĻžāϰ⧇ āĻĒā§āϰāϚ⧁āϰ āĻ…āύ⧁āĻŽāĻžāύ āϏāĻŽāĻžāĻ¨ā§āϤāϰāĻžāϞ⧇ āϚāĻžāϞāĻŋāϝāĻŧ⧇ āϏāĻĢāϞ āĻšāϝāĻŧāĨ¤ āĻŽā§‡āĻŽāϰāĻŋ āϏ⧇āχ āϧāϰāύ⧇āϰ āϏāĻŽāĻžāĻ¨ā§āϤāϰāĻžāϞ⧇ āĻ¸ā§āϕ⧇āϞ āĻ•āϰāĻž āĻ•āĻ āĻŋāύ āĻāĻŦāĻ‚ āĻŦā§āϝāϝāĻŧāĻŦāĻšā§āϞāĨ¤\n\nArgon2-āĻāϰ āϤāĻŋāύāϟāĻŋ āĻ­ā§āϝāĻžāϰāĻŋāϝāĻŧ⧇āĻ¨ā§āϟ āφāϛ⧇:\n\n- Argon2i: āĻ•āĻŋāϛ⧁ āϏāĻžāχāĻĄ-āĻšā§āϝāĻžāύ⧇āϞ āφāĻ•ā§āϰāĻŽāϪ⧇āϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āϰ⧇āϏāĻŋāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϏ⧇ āĻœā§‹āϰ āĻĻ⧇āϝāĻŧ\n- Argon2d: GPU āĻĒā§āϰāϤāĻŋāϰ⧋āϧ⧇ āϗ⧁āϰ⧁āĻ¤ā§āĻŦ āφāϰ⧋āĻĒ āĻ•āϰ⧇, āϏāĻžāχāĻĄ-āĻšā§āϝāĻžāύ⧇āϞ āĻŦāĻŋāĻŦ⧇āϚāύāĻžāϗ⧁āϞ⧋ āϏāĻš\n- Argon2id: āωāĻ­āϝāĻŧ⧇āϰ āĻāĻ•āϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ• āĻŽāĻŋāĻļā§āϰāĻŖ, āĻāĻŦāĻ‚ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻšā§āϝāĻžāĻļāĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻžāϧāĻžāϰāĻŖ āĻĄāĻŋāĻĢāĻ˛ā§āϟ\n\nāφāĻĒāύāĻžāϰ āĻ¸ā§āĻŸā§āϝāĻžāĻ• āϝāĻĻāĻŋ Argon2id āϏāĻžāĻĒā§‹āĻ°ā§āϟ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āφāĻĒāύāĻŋ āύāĻŋāϰāĻžāĻĒāĻĻāĻ­āĻžāĻŦ⧇ āĻŽā§‡āĻŽāϰāĻŋ āϟāĻŋāωāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāϟāĻŋ āφāϧ⧁āύāĻŋāĻ• āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻšāĻŋāϏ⧇āĻŦ⧇ āϏ⧇āϰāĻžāĨ¤ āϝāĻĻāĻŋ āĻĒ⧁āϰāύ⧋ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āϰ āĻŽāĻžāĻā§‡ āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝ āĻĻāϰāĻ•āĻžāϰ āĻšāϝāĻŧ, āϤāĻ–āύ āϝāĻĨ⧇āĻˇā§āϟ āωāĻšā§āϚ āĻ•āĻ¸ā§āϟ āĻĢā§āϝāĻžāĻ•ā§āϟāϰ āϏāĻš bcrypt āĻāĻ–āύāĻ“ āĻāĻ•āϟāĻŋ āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀ āĻĒāĻ›āĻ¨ā§āĻĻāĨ¤\n\n## āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞ⧋\n\nāĻŽā§‚āϞ āĻĒā§āϰāĻļā§āύ āϏāĻšāϜ: āϝāĻĻāĻŋ āφāĻ•ā§āϰāĻŽāĻŖāĻ•āĻžāϰ⧀ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āϚ⧁āϰāĻŋ āĻ•āϰ⧇, āĻŦ⧜ āĻĒāϰāĻŋāϏāϰ⧇ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻ…āύ⧁āĻŽāĻžāύ āĻ•āϰāĻž āĻ•āϤāϟāĻž āĻŦā§āϝāϝāĻŧāĻŦāĻšā§āϞ?\n\nbcrypt-āĻ āφāĻĒāύāĻŋ āĻ•āĻ¸ā§āϟ (āĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻĢā§āϝāĻžāĻ•ā§āϟāϰ) āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āĻ•āϰ⧇āύāĨ¤ āĻ•āĻ¸ā§āϟ āĻŦāĻžāĻĄāĻŧāĻžāϞ⧇ āĻĒā§āϰāϤāĻŋ āĻ…āύ⧁āĻŽāĻžāύ āφāϰ⧋ āϏāĻŽāϝāĻŧ āύ⧇āϝāĻŧāĨ¤ āĻāϟāĻŋ āφāĻ•ā§āϰāĻŽāĻŖāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āϧ⧀āϰ āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāĻ•āχ āϏāĻžāĻĨ⧇ āφāĻĒāύāĻžāϰ āύāĻŋāĻœā§‡āϰ āϞāĻ—āχāύ āϝāĻžāϚāĻžāχāĻ“ āϧ⧀āϰ āĻ•āĻ°ā§‡â€”āϤāĻžāχ āĻāϟāĻŋāϕ⧇ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻ¨ā§āĻĻ⧁āϤ⧇ āϟāĻŋāωāύ āĻ•āϰāĻž āĻšāϝāĻŧ āϝāĻž āφāĻ•ā§āϰāĻŽāĻŖāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āϜāĻ¨ā§āϝ āĻ•āĻˇā§āϟāĻĻāĻžāϝāĻŧāĻ• āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āϜāĻ¨ā§āϝ āĻ—ā§āϰāĻšāĻŖāϝ⧋āĻ—ā§āϝāĨ¤\n\nArgon2id-āĻ āφāĻĒāύāĻŋ āϟāĻžāχāĻŽ āĻ•āĻ¸ā§āĻŸā§‡āϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻŽā§‡āĻŽāϰāĻŋ-āĻšāĻžāĻ°ā§āĻĄāύ⧇āϏ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻ…āύ⧁āĻŽāĻžāύ CPU āϏāĻŽāϝāĻŧ āĻāĻŦāĻ‚ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ⧇ RAM āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ•āϰ⧇āĨ¤ GPU āϗ⧁āϞ⧋ āĻ—āĻŖāĻŋāϤ-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻ•āĻžāϜāϗ⧁āϞ⧋āϤ⧇ āĻ…āĻ¤ā§āϝāĻ¨ā§āϤ āĻĻā§āϰ⧁āϤ āĻšāϤ⧇ āĻĒāĻžāϰ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϏāĻŽāĻžāĻ¨ā§āϤāϰāĻžāϞ āĻ…āύ⧁āĻŽāĻžāύ āϝāĻĻāĻŋ āωāĻ˛ā§āϞ⧇āĻ–āϝ⧋āĻ—ā§āϝ āĻŽā§‡āĻŽāϰāĻŋ āϚāĻžāϝāĻŧ āϤāĻŦ⧇ GPU āĻāϰ āϏ⧁āĻŦāĻŋāϧāĻž āĻ…āύ⧇āĻ•āϟāĻžāχ āĻ•āĻŽā§‡ āϝāĻžāϝāĻŧāĨ¤\n\nāϏāĻžāĻ˛ā§āϟ āĻ…āĻĒāϰāĻŋāĻšāĻžāĻ°ā§āϝāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻ…āύāĻ¨ā§āϝ, āĻ°ā§āϝāĻžāĻ¨ā§āĻĄāĻŽ āϏāĻžāĻ˛ā§āϟ:\n\n- āĻĒā§āϰāĻŋāĻ•āĻŽā§āĻĒāĻŋāωāĻŸā§‡āĻĄ āĻŸā§‡āĻŦāĻŋāϞāϕ⧇ āφāĻĒāύāĻžāϰ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āϜ⧁āĻĄāĻŧ⧇ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻĨ⧇āϕ⧇ āϰ⧋āϧ āĻ•āϰ⧇\n- āĻāĻ•āχ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻĨāĻžāĻ•āĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻāĻ•āχ āĻšā§āϝāĻžāĻļ āϤ⧈āϰāĻŋ āĻšāĻ“āϝāĻŧāĻž āϰ⧋āϧ āĻ•āϰ⧇\n\nāϏāĻžāĻ˛ā§āϟ āĻĻ⧁āĻ°ā§āĻŦāϞ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄāϕ⧇ āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀ āĻ•āϰ⧇ āύāĻžāĨ¤ āĻāϗ⧁āϞ⧋ āĻŽā§‚āϞāϤ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻĢāĻžāρāϏ⧇āϰ āĻĒāϰ āφāĻ•ā§āϰāĻŽāĻŖāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻĒā§āϰāϤāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻŦāĻžāĻ§ā§āϝ āĻ•āϰ⧇āĨ¤\n\n## bcrypt-āĻāϰ āĻļāĻ•ā§āϤāĻŋ āĻ“ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻžāϏāĻŽā§‚āĻš\n\nbcrypt āĻāĻ–āύ⧋ āĻŦā§āϝāĻžāĻĒāĻ•āĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ, āĻĒā§āϰāĻžāϝāĻŧāχ āĻ•āĻžāϰāĻŖ āĻāϟāĻŋ āϏāĻŦ āϜāĻžā§ŸāĻ—āĻžā§Ÿ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž āϏāĻšāϜāĨ¤ āĻāϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻ­āĻžāϞ⧋ āĻĢāĻŋāϟ āϝāĻ–āύ āφāĻĒāύāĻžāϕ⧇ āĻŦāĻŋāĻ¸ā§āϤ⧃āϤ āφāĻ¨ā§āϤāĻ°ā§āϜāĻžāϤāĻŋāĻ• āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝ āĻĻāϰāĻ•āĻžāϰ, āφāĻĒāύāĻžāϰ āĻ¸ā§āĻŸā§āϝāĻžāϕ⧇āϰ āĻ•ā§āϰāĻŋāĻĒā§āĻŸā§‹ āĻ…āĻĒāĻļāύ āϏ⧀āĻŽāĻŋāϤ, āĻ…āĻĨāĻŦāĻž āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ āϏāĻšāϜ āϟāĻŋāωāύāĻŋāĻ‚ āϞāĻŋāĻ­āĻžāϰ āϚāĻžāύāĨ¤\n\nāĻŦāĻĄāĻŧ “āĻ—āϟāϚāĻžâ€ āĻšāϞ⧋ 72-āĻŦāĻžāχāϟ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āϏ⧀āĻŽāĻžāĨ¤ bcrypt āϕ⧇āĻŦāϞ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄā§‡āϰ āĻĒā§āϰāĻĨāĻŽ 72 āĻŦāĻžāχāϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻŦāĻžāĻ•āĻŋ āωāĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰ⧇āĨ¤ āĻĻā§€āĻ°ā§āϘ āĻĒāĻžāϏāĻĢā§āϰ⧇āϜ āĻŦāĻž āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āϜāĻ¨ā§āϝ āĻāϟāĻŋ āφāĻļā§āϚāĻ°ā§āϝ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤\n\nāφāĻĒāύāĻŋ bcrypt āĻŦ⧇āϛ⧇ āύāĻŋāϞ⧇ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ⧇āϰ āφāϚāϰāĻŖ āĻ¸ā§āĻĒāĻˇā§āϟ āĻ•āϰ⧇ āϜāĻžāύāĻžāύāĨ¤ āĻ…āĻĨāĻŦāĻž āĻāĻ•āϟāĻŋ āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ (āĻŦāĻžāχāĻŸā§‡, āϚāϰāĻŋāĻ¤ā§āϰ⧇ āύāϝāĻŧ) āĻœā§‹āϰ āĻĻāĻŋāύ āĻ…āĻĨāĻŦāĻž āĻĻā§€āĻ°ā§āϘ āχāύāĻĒ⧁āϟāϗ⧁āϞ⧋ āϧāĻžāϰāĻžāĻŦāĻžāĻšāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻšā§āϝāĻžāĻ¨ā§āĻĄā§‡āϞ āĻ•āϰ⧁āύāĨ¤ āĻĒā§āϰāϧāĻžāύ āĻŦāĻŋāώāϝāĻŧ āĻšāϞ⧋ āύ⧀āϰāĻŦ⧇ āĻŸā§āϰāĻžāĻ™ā§āϕ⧇āĻļāύ āĻāĻĄāĻŧāĻžāύ⧋ āϝāĻžāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϝāĻž āĻŽāύ⧇ āĻ•āϰāϛ⧇āύ āϤāĻžāϰ āϏāĻžāĻĨ⧇ āϤāĻžāĻĻ⧇āϰ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄāϟāĻŋ āĻŽāĻŋāϞ⧇ āϝāĻžāϝāĻŧāĨ¤\n\nbcrypt āϏāĻŽāϏāĻžāĻŽāϝāĻŧāĻŋāĻ• āϏāĻŽāĻžāĻ¨ā§āϤāϰāĻžāϞ āĻ•ā§āĻ°ā§āϝāĻžāĻ•āĻŋāĻ‚ āĻšāĻžāĻ°ā§āĻĄāĻ“āϝāĻŧā§āϝāĻžāϰ⧇āϰ āϤ⧁āϞāύāĻžā§Ÿ āĻ•āĻŽ āĻĒā§āϰāϤāĻŋāϰ⧋āϧ⧀āĨ¤ āĻāϰ āĻĒā§āϰāϤāĻŋāϰāĻ•ā§āώāĻž āĻāĻ–āύāĻ“ āĻŦ⧈āϧ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāϟāĻŋ āĻŦāĻŋāĻļ⧇āώāĻ­āĻžāĻŦ⧇ āĻĒā§āϰāϤāĻŋ āĻ…āύ⧁āĻŽāĻžāύāϕ⧇ āĻŦā§āϝāϝāĻŧāĻŦāĻšā§āϞ āϰāĻžāĻ–āĻžāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āĻ°ā§‡â€”āĻ…āĻ°ā§āĻĨāĻžā§Ž āĻ•āĻ¸ā§āϟ āĻĢā§āϝāĻžāĻ•ā§āϟāϰ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰāĻž āϜāϰ⧁āϰāĻŋāĨ¤\n\nāφāĻĒāύāĻŋ āϝāĻĻāĻŋ āύāϤ⧁āύ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āύāĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻ•āϰāϛ⧇āύ āĻŦāĻž āωāĻšā§āϚ-āĻŽā§‚āĻ˛ā§āϝ⧇āϰ āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āϟ āĻĨāĻžāϕ⧇ (āĻĒ⧇āχāĻĄ āĻĒā§āĻ˛ā§āϝāĻžāύ, āĻ…ā§āϝāĻžāĻĄāĻŽāĻŋāύ), āϤāĻžāĻšāϞ⧇ āύāϤ⧁āύ āĻšā§āϝāĻžāĻļāϗ⧁āϞ⧋āϕ⧇ Argon2id-āĻ āĻŽāĻžāχāĻ—ā§āϰ⧇āϟ āĻ•āϰāĻž āĻāĻŦāĻ‚ āĻāĻ•āχ āϏāĻžāĻĨ⧇ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ bcrypt āĻšā§āϝāĻžāĻļāϗ⧁āϞ⧋āϕ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϞāĻ—āχāύ āĻ•āϰāϞ⧇ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰāĻž āϏāĻžāϧāĻžāϰāĻŖ āĻ“ āĻ•āĻŽ-āĻā§āρāĻ•āĻŋāϰ āĻĒāĻĨāĨ¤\n\n## Argon2-āĻāϰ āĻļāĻ•ā§āϤāĻŋ āĻ“ āĻŸā§āϰ⧇āĻĄāĻ…āĻĢ\n\nArgon2 āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻšā§āϝāĻžāĻļāĻŋāĻ‚ā§Ÿā§‡āϰ āϜāĻ¨ā§āϝ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āϟāĻŋāĻŽ Argon2id āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰ⧇ āĻ•āĻžāϰāĻŖ āĻāϟāĻŋ GPU āĻĒā§āϰāϤāĻŋāϰ⧋āϧ āĻ“ āϏāĻžāχāĻĄ-āĻšā§āϝāĻžāύ⧇āϞ āϏ⧁āϰāĻ•ā§āώāĻžāϰ āĻŽāĻ§ā§āϝ⧇ āϏāĻŽāϤāĻž āϰāĻžāϖ⧇āĨ¤\n\nArgon2id āφāĻĒāύāĻžāϕ⧇ āϤāĻŋāύāϟāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻĻ⧇āϝāĻŧ:\n\n- Memory (m): āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻšā§āϝāĻžāĻļ āϚāĻžāϞāĻžāύ⧋āϰ āϏāĻŽāϝāĻŧ āĻ•āϤ RAM āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšāĻŦ⧇\n- Time/iterations (t): āĻŽā§‡āĻŽāϰāĻŋāϰ āωāĻĒāϰ āĻ•āϤāĻŦāĻžāϰ āĻĒāĻžāϏ āĻ•āϰāĻž āĻšāĻŦ⧇\n- Parallelism (p): āĻ•āϤāϟāĻŋ āϞ⧇āχāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇ (āĻŽāĻžāĻ˛ā§āϟāĻŋ-āϕ⧋āϰ CPUs-āĻ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰ⧇)\n\nāĻŽā§‡āĻŽāϰāĻŋ āĻšāϞ⧋ āĻĒā§āϰāϧāĻžāύ āϏ⧁āĻŦāĻŋāϧāĻžāĨ¤ āϝāĻĻāĻŋ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻ…āύ⧁āĻŽāĻžāύ āωāĻ˛ā§āϞ⧇āĻ–āϝ⧋āĻ—ā§āϝ āĻĒāϰāĻŋāĻŽāĻžāĻŖ RAM āϚāĻžāύ, āφāĻ•ā§āϰāĻŽāĻŖāĻ•āĻžāϰ⧀āϰāĻž āĻāĻ•āχ āϏāĻŽāϝāĻŧ⧇ āĻ…āύ⧇āĻ•āϗ⧁āϞ⧋ āĻ…āύ⧁āĻŽāĻžāύ āϚāĻžāϞāĻžāϤ⧇ āĻšāϞ⧇ RAM āĻ•ā§āώāĻŽāϤāĻž āĻ“ āĻŦā§āϝāĻžāĻ¨ā§āĻĄāωāχāĻĨ⧇āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϚ⧁āϰ āĻ–āϰāϚ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤\n\nāύ⧁āĻ•āϏāĻžāύ āĻšāϞ⧋ āĻ…āĻĒāĻžāϰ⧇āĻļāύāĻžāϞ: āĻĒā§āϰāϤāĻŋ āĻšā§āϝāĻžāĻļ āĻŦ⧇āĻļāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻžāĻ—āϞ⧇ āφāĻĒāύāĻžāϰ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻāĻ•āϏāĻŽāϝāĻŧ⧇ āĻ•āĻŽ āĻ•āύāĻ•āĻžāϰ⧇āĻ¨ā§āϟ āϞāĻ—āχāύ āĻšā§āϝāĻžāĻ¨ā§āĻĄā§‡āϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϖ⧁āĻŦ āĻŦ⧇āĻļāĻŋ āϏ⧇āϟ āĻ•āϰ⧇āύ, āϞāĻ—āχāύ āĻ¸ā§āĻĒāĻžāχāĻ•āϏ⧇āϰ āϏāĻŽāϝāĻŧ āĻ•āĻŋāω āϤ⧈āϰāĻŋ āĻšāĻ“āϝāĻŧāĻž, āϟāĻžāχāĻŽāφāωāϟ āĻŦāĻž āφāωāϟ-āĻ…āĻĢ-āĻŽā§‡āĻŽāϰāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻž āĻĻ⧁āĻ°ā§āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ­āĻžāĻŦāϤ⧇āĻ“ āĻšāĻŦ⧇: āĻ…āύ⧇āĻ• āĻ•āύāĻ•āĻžāϰ⧇āĻ¨ā§āϟ āϞāĻ—āχāύ āĻšā§‡āĻˇā§āϟāĻž āϝāĻĻāĻŋ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧ āύāĻž āĻ•āϰāĻž āĻšāϝāĻŧ āϤāĻŦ⧇ āĻāϟāĻŋ āϰāĻŋāϏ⧋āĻ°ā§āϏ āϏāĻŽāĻ¸ā§āϝāĻž āϏ⧃āĻˇā§āϟāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤\n\nArgon2id āύāĻŋāϰāĻžāĻĒāĻĻ āĻ“ āĻŦā§āϝāĻŦāĻšāĻžāϰāϝ⧋āĻ—ā§āϝ āϰāĻžāĻ–āϤ⧇ āĻāϟāĻžāϕ⧇ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ⧇āϰ āĻŽāϤ⧋ āϟāĻŋāωāύ āĻ•āϰ⧁āύ:\n\n- āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ-āϏāĻĻ⧃āĻļ āĻšāĻžāĻ°ā§āĻĄāĻ“āϝāĻŧā§āϝāĻžāϰ⧇ āĻŦ⧇āĻžā§āϚāĻŽāĻžāĻ°ā§āĻ• āĻ•āϰ⧁āύ\n- āĻ•āύāĻ•āĻžāϰ⧇āĻ¨ā§āϟ āĻšā§āϝāĻžāĻļāĻŋāĻ‚ āĻ•āĻžāϜ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧ āĻ•āϰ⧁āύ (āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϰ āĻ•ā§āϝāĻžāĻĒ, āĻ•āĻŋāω)\n- āϞāĻ—āχāύ āĻšā§‡āĻˇā§āϟāĻž āϰ⧇āϟ-āϞāĻŋāĻŽāĻŋāϟ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻŦāĻžāϰāĻŦāĻžāϰ āĻŦā§āϝāĻ°ā§āĻĨ āĻšāϞ⧇ āϞāĻ• āφāωāϟ āĻĻāĻŋāύ\n- āϏāĻžāĻ°ā§āĻ­āĻŋāϏāϗ⧁āϞ⧋āϰ āĻŽāĻ§ā§āϝ⧇ āϏ⧇āϟāĻŋāĻ‚āϏ āϏāĻ™ā§āĻ—āϤ āϰāĻžāϖ⧁āύ āϝāĻžāϤ⧇ āĻāĻ•āϟāĻŋ āĻĻ⧁āĻ°ā§āĻŦāϞ āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āϟ āϟāĻžāĻ°ā§āϗ⧇āϟ āύāĻž āĻšāϝāĻŧ\n\n## āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻ“āϝāĻŧ⧇āĻŦ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄā§‡ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏ āĻ–āϰāϚ\n\nāĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻšā§āϝāĻžāĻļāĻŋāĻ‚āϝāĻŧ⧇ "āĻĻā§āϰ⧁āϤāϤāĻžāχ āĻ­āĻžāϞ⧋" āϏāĻžāϧāĻžāϰāĻŖāϤ āϭ⧁āϞ āϞāĻ•ā§āĻˇā§āϝāĨ¤ āφāĻĒāύāĻŋ āϚāĻžāύ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻ…āύ⧁āĻŽāĻžāύ āφāĻ•ā§āϰāĻŽāĻŖāĻ•āĻžāϰ⧀āϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāϝāĻŧāĻŦāĻšā§āϞ āĻšā§‹āĻ•, āϤāĻŦ⧁ āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āϜāĻ¨ā§āϝ āϞāĻ—āχāύ āĻĻā§āϰ⧁āϤ āϞāĻžāϗ⧇āĨ¤\n\nāĻāĻ•āϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ• āωāĻĒāĻžāϝāĻŧ āĻšāϞ⧋ āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻ•ā§ƒāϤ āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ āĻšāĻžāĻ°ā§āĻĄāĻ“āϝāĻŧā§āϝāĻžāϰ⧇ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϝāĻžāϚāĻžāχāϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϏāĻŽāϝāĻŧ āĻŦāĻžāĻœā§‡āϟ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰāĻžāĨ¤ āĻ…āύ⧇āĻ• āϟāĻŋāĻŽ āĻĒā§āϰāĻžāϝāĻŧ 100 āĻĨ⧇āϕ⧇ 300 ms āĻĒā§āϰāϤāĻŋ āĻšā§āϝāĻžāĻļ āĻšā§‡āĻ• āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϏāĻ āĻŋāĻ• āϏāĻ‚āĻ–ā§āϝāĻž āφāĻĒāύāĻžāϰ āĻŸā§āϰāĻžāĻĢāĻŋāĻ• āĻ“ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āύāĻŋāĻ°ā§āĻ­āϰāĨ¤ bcrypt āĻ“ Argon2-āϰ āĻŽāĻ§ā§āϝ⧇ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ āĻšāϞ⧋ āφāĻĒāύāĻŋ āϕ⧋āĻĨāĻžāϝāĻŧ āĻ–āϰāϚ āĻ•āϰāϛ⧇āύ: bcrypt āĻŽā§‚āϞāϤ CPU āϏāĻŽāϝāĻŧ⧇ āĻ–āϰāϚ āĻ•āϰ⧇, āϝ⧇āĻ–āĻžāύ⧇ Argon2 āĻŽā§‡āĻŽāϰāĻŋ āϰāĻŋāϜāĻžāĻ°ā§āĻ­āĻ“ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤\n\n### āĻāĻ•āϟāĻŋ āϞāĻ•ā§āĻˇā§āϝ āϏāĻŽāϝāĻŧ āĻŦ⧇āϛ⧇ āύāĻŋāύ, āϤāĻžāϰāĻĒāϰ āĻŽāĻžāĻĒ⧁āύ\n\nāĻāĻ•āϟāĻŋ āϞāĻ•ā§āĻˇā§āϝ āĻšā§āϝāĻžāĻļ āϏāĻŽāϝāĻŧ āĻŦ⧇āϛ⧇ āύāĻŋāύ āĻāĻŦāĻ‚ āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ-āϏāĻĻ⧃āĻļ āĻļāĻ°ā§āϤ⧇ āϤāĻž āĻŸā§‡āĻ¸ā§āϟ āĻ•āϰ⧁āύāĨ¤ āϏāĻžāχāύāφāĻĒ/āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ-āĻšā§‡āχāĻžā§āϜ āĻšā§āϝāĻžāĻļāĻŋāĻ‚ āĻāĻŦāĻ‚ āϞāĻ—āχāύ āϝāĻžāϚāĻžāχ āĻĻ⧁āĻŸā§‹āχ āĻŽāĻžāĻĒ⧁āύ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϞāĻ—āχāύāϕ⧇ āĻšāϟ āĻĒāĻžāĻĨ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύāĨ¤\n\nāĻšāĻžāϞāĻ•āĻž āĻ“āϜāύ⧇āϰ āĻāĻ•āϟāĻŋ āĻŽā§‡āϜāĻžāϰāĻŽā§‡āĻ¨ā§āϟ āĻĒā§āĻ˛ā§āϝāĻžāύ:\n\n- 1, 10, āĻāĻŦāĻ‚ 50 āĻ•āύāĻ•āĻžāϰ⧇āĻ¨ā§āϟ āϞāĻ—āχāύ āĻšā§‡āĻ• āĻŸā§‡āĻ¸ā§āϟ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ p50 āĻ“ p95 āĻ˛ā§āϝāĻžāĻŸā§‡āĻ¨ā§āϏāĻŋ āϰ⧇āĻ•āĻ°ā§āĻĄ āĻ•āϰ⧁āύ\n- āĻ•ā§āϝāĻžāĻļāĻŋāĻ‚ āĻ“ CPU āĻŦ⧁āĻ¸ā§āϟāĻŋāĻ‚ āĻĨ⧇āϕ⧇ āĻļāĻŦā§āĻĻ āĻ•āĻŽāĻžāϤ⧇ āϰāĻžāύāϗ⧁āϞ⧋ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ āĻ•āϰ⧁āύ\n- āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻ•āϞ āφāϞāĻžāĻĻāĻž āĻŽāĻžāĻĒ⧁āύ āϝāĻžāϤ⧇ āφāĻĒāύāĻŋ āϜāĻžāύ⧇āύ āĻšā§āϝāĻžāĻļāĻŋāĻ‚ āφāϏāϞ⧇ āĻ•āϤ āĻ–āϰāϚ āĻ•āϰāϛ⧇\n- āĻāĻ•āχ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āĻ“ CPU āϞāĻŋāĻŽāĻŋāϟ āύāĻŋāϝāĻŧ⧇ āĻŸā§‡āĻ¸ā§āϟ āĻ•āϰ⧁āύ āϝ⧇āϟāĻž āφāĻĒāύāĻŋ āĻĄāĻŋāĻĒā§āϞāϝāĻŧ āĻ•āϰāĻŦ⧇āύ\n\n### āĻ¸ā§āĻĒāĻžāχāĻ•āϗ⧁āϞ⧋ āĻ—āĻĄāĻŧ⧇āϰ āĻšā§‡āϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ\n\nāĻ…āύ⧇āĻ• āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻļāĻŋāĻ–āϰ⧇ āĻŦā§āϝāĻ°ā§āĻĨ āĻšāϝāĻŧāĨ¤ āϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āĻŽāĻžāĻ°ā§āϕ⧇āϟāĻŋāĻ‚ āχāĻŽā§‡āχāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āϞāĻ—āχāύ⧇ āĻĸ⧇āϞ⧇ āĻĻ⧇āϝāĻŧ, āφāĻĒāύāĻžāϰ āĻšā§āϝāĻžāĻļāĻŋāĻ‚ āϏ⧇āϟāĻŋāĻ‚āϏāχ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰāĻŦ⧇ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻļā§€āϞ āĻĨāĻžāĻ•āĻŦ⧇ āĻ•āĻŋ āύāĻžāĨ¤\n\nāϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āϝāĻžāϚāĻžāχāĻ•āϰāĻŖ 250 ms āύ⧇āϝāĻŧ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻāĻ•āϏāĻžāĻĨ⧇ 40āϟāĻŋ āĻšā§āϝāĻžāĻ¨ā§āĻĄā§‡āϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āĻ•āĻŋāω āĻšāĻ“āϝāĻŧāĻžāϰ āφāϗ⧇, 500 āϞāĻ—āχāύ āĻ…āύ⧁āϰ⧋āϧ⧇āϰ āĻāĻ• āĻ¸ā§āĻĒāĻžāχāĻ• āĻŽāĻŋāϞāĻŋāϝāĻŧāύ āϏ⧇āϕ⧇āĻ¨ā§āĻĄā§‡āϰ āĻ…āĻĒ⧇āĻ•ā§āώāĻžāϝāĻŧ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻāĻŽāύ āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋāϤ⧇ āĻ•āĻ¸ā§āϟ āϏāĻžāĻŽāĻžāĻ¨ā§āϝ āĻ•āĻŽāĻžāύ⧋ āĻāĻŦāĻ‚ āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀ āϰ⧇āϟ-āϞāĻŋāĻŽāĻŋāϟ āĻ•āĻĄāĻŧāĻž āĻ•āϰāĻž āĻŦāĻžāĻ¸ā§āϤāĻŦ⧇ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āĻŦāĻžāĻĄāĻŧāĻŋāϝāĻŧ⧇ āĻĻāĻŋāϤ⧇ āĻĒāĻžāϰ⧇, āϤ⧁āϞāύāĻžāϝāĻŧ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰāϗ⧁āϞ⧋ āĻāĻŽāύ āĻĒāĻ°ā§āϝāĻžāϝāĻŧ⧇ āϠ⧇āϞ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻž āϝ⧇āĻ–āĻžāύ⧇ āϞāĻ—āχāύ āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āϟ āĻ­āĻ™ā§āϗ⧁āϰ āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧāĨ¤\n\n### āχāĻ¨ā§āϟāĻžāϰāĻ…ā§āϝāĻžāĻ•āϟāĻŋāĻ­ āϞāĻ—āχāύāϕ⧇ āĻĒā§‚āĻ°ā§āĻŦāĻžāύ⧁āĻŽā§‡āϝāĻŧ āϰāĻžāϖ⧁āύ\n\nāĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻ…āĻĒāĻžāϰ⧇āĻļāύ āĻāĻ•āχ āϜāϰ⧁āϰ⧀āϤāĻž āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻ•āϰ⧇ āύāĻžāĨ¤ āχāĻ¨ā§āϟāĻžāϰāĻ…ā§āϝāĻžāĻ•āϟāĻŋāĻ­ āϞāĻ—āχāύ⧇āϰ āĻ•āĻ¸ā§āϟ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āϰāĻžāϖ⧁āύ, āϤāĻžāϰāĻĒāϰ āĻ­āĻžāϰ⧀ āĻ•āĻžāϜ āĻ•ā§āϰāĻŋāϟāĻŋāĻ•āĻžāϞ āĻĒāĻžāĻĨ⧇āϰ āĻŦāĻžāχāϰ⧇ āύāĻŋāϝāĻŧ⧇ āϝāĻžāύāĨ¤ āĻāĻ•āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ āĻšāϞ⧋ rehash-on-login (āϏāĻĢāϞ āϞāĻ—āχāύ⧇āϰ āĻ āĻŋāĻ• āĻĒāϰ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āĻšā§āϝāĻžāĻļ āφāĻĒāĻ—ā§āϰ⧇āĻĄ āĻ•āϰāĻž) āĻŦāĻž āĻŦā§āϝāĻžāĻ•āĻ—ā§āϰāĻžāωāĻ¨ā§āĻĄ āϜāĻŦāϗ⧁āϞ⧋ āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ āĻ“ āχāĻŽāĻĒā§‹āĻ°ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāĨ¤\n\n## āϧāĻžāĻĒ⧇ āϧāĻžāĻĒ⧇ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻŦāĻžāĻ›āĻŦ⧇āύ\n\nāĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āϟāĻŋāωāύ āĻ•āϰāĻž āĻŽāĻžāύ⧇ āφāĻ•ā§āϰāĻŽāĻŖāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻĒā§āϰāϤāĻŋ āĻ…āύ⧁āĻŽāĻžāύ āĻ–āϰāϚ āĻŦāĻžāĻĄāĻŧāĻžāύ⧋, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āϏāĻžāχāύ-āχāύ āϧ⧀āϰ āĻŦāĻž āϏāĻžāĻ°ā§āĻ­āĻžāϰāϕ⧇ āĻ…āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āύāĻž āĻ•āϰāĻžāĨ¤\n\n1. āφāĻĒāύāĻžāϰ āĻ¸ā§āĻŸā§āϝāĻžāĻ• āĻ­āĻžāϞāĻ­āĻžāĻŦ⧇ āϕ⧋āύ āφāϞāĻ—ā§‹āϰāĻŋāĻĻāĻŽ āϏāĻžāĻĒā§‹āĻ°ā§āϟ āĻ•āϰ⧇ āϤāĻž āĻŦ⧇āϛ⧇ āύāĻŋāύāĨ¤ Argon2id āϝāĻĻāĻŋ āĻ­āĻžāϞ āϏāĻžāĻĒā§‹āĻ°ā§āϟ āĻ•āϰ⧇ āĻĨāĻžāϕ⧇ āĻāϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻĄāĻŋāĻĢāĻ˛ā§āϟ; āύāĻž āĻšāϞ⧇ bcrypt āĻ āĻŋāĻ• āφāϛ⧇āĨ¤\n\n2. āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ-āϏāĻĻ⧃āĻļ āĻšāĻžāĻ°ā§āĻĄāĻ“āϝāĻŧā§āϝāĻžāϰ⧇ āĻĒā§āϰāϤāĻŋ āĻšā§āϝāĻžāĻļ⧇āϰ āϞāĻ•ā§āĻˇā§āϝ āϏāĻŽāϝāĻŧ āϏ⧇āϟ āĻ•āϰ⧁āύāĨ¤ āĻĒāĻŋāĻ• āϞ⧋āĻĄā§‡āϰ āϏāĻŽāϝāĻŧāĻ“ āϞāĻ—āχāύ āĻŽāϏ⧃āĻŖ āϰāĻžāϖ⧇ āĻāĻŽāύ āĻ•āĻŋāϛ⧁ āĻŦ⧇āϛ⧇ āύāĻŋāύāĨ¤\n\n3. āϟāĻžāχāĻŽ āĻšāĻŋāϟ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϟāĻŋāωāύ āĻ•āϰ⧁āύāĨ¤ bcrypt-āĻ āĻ•āĻ¸ā§āϟ āĻĢā§āϝāĻžāĻ•ā§āϟāϰ āϏāĻŽāĻ¨ā§āĻŦāϝāĻŧ āĻ•āϰ⧁āύāĨ¤ Argon2id-āĻ āĻŽā§‡āĻŽāϰāĻŋ, āχāϟāĻžāϰ⧇āĻļāύ, āĻāĻŦāĻ‚ āĻĒā§āϝāĻžāϰāĻžāϞāĻžāϞāĻŋāϜāĻŽ āĻŦā§āϝāĻžāϞāĻžāĻ¨ā§āϏ āĻ•āϰ⧁āύāĨ¤ āĻŽā§‡āĻŽāϰāĻŋ āĻšāϞ āφāĻ•ā§āϰāĻŽāĻŖāĻ•āĻžāϰ⧀āϰ āĻ…āĻ°ā§āĻĨāύ⧀āϤāĻŋāϕ⧇ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇āĨ¤\n\n4. āĻšā§āϝāĻžāĻļ⧇āϰ āϏāĻ™ā§āϗ⧇ āφāϞāĻ—ā§‹āϰāĻŋāĻĻāĻŽ āĻ“ āϏ⧇āϟāĻŋāĻ‚āϏ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύāĨ¤ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻšā§āϝāĻžāĻļ āĻĢāϰāĻŽā§āϝāĻžāϟ āĻāχ āĻŦāĻŋāĻŦāϰāĻŖ āĻāĻŽāĻŦ⧇āĻĄ āĻ•āϰ⧇āĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύ āφāĻĒāύāĻžāϰ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻĢāĻŋāĻ˛ā§āĻĄ āϝāĻĨ⧇āĻˇā§āϟ āϞāĻŽā§āĻŦāĻž āϝ⧇āύ āĻšā§āϝāĻžāĻļ āĻ•āĻ–āύāĻ“ āĻŸā§āϰāĻžāĻ™ā§āϕ⧇āϟ āύāĻž āĻšāϝāĻŧāĨ¤\n\n5. āϰāĻŋāĻšā§āϝāĻžāĻļ-āĻ…āύ-āϞāĻ—āχāύ āĻĻāĻŋāϝāĻŧ⧇ āφāĻĒāĻ—ā§āϰ⧇āĻĄ āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāύāĻž āĻ•āϰ⧁āύāĨ¤ āϝāĻ–āύ āχāωāϜāĻžāϰ āϞāĻ—āχāύ āĻ•āϰ⧇, āϝāĻĻāĻŋ āϤāĻžāĻĻ⧇āϰ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ āĻšā§āϝāĻžāĻļ āφāĻĒāύāĻžāϰ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻĒāϞāĻŋāϏāĻŋāϰ āĻĨ⧇āϕ⧇ āĻĻ⧁āĻ°ā§āĻŦāϞ āĻšāϝāĻŧ, āϰāĻŋāĻšā§āϝāĻžāĻļ āĻ•āϰ⧇ āϤāĻž āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧁āύāĨ¤\n\n### āĻāĻ•āϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ• āĻ¸ā§āϟāĻžāĻ°ā§āϟāĻŋāĻ‚ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟ\n\nāĻĒāϰāĻŋāĻŽāĻžāĻĒ⧇āϰ āφāϗ⧇ āϝāĻĻāĻŋ āĻŦ⧇āϏāϞāĻžāχāύ āĻĻāϰāĻ•āĻžāϰ āĻšāϝāĻŧ, āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϟāĻžāχāĻŽāĻŋāĻ‚ āĻĻ⧇āϖ⧇ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝ āĻ•āϰ⧁āύāĨ¤\n\n- bcrypt-āĻāϰ āϜāĻ¨ā§āϝ āĻ…āύ⧇āĻ• āĻĻāϞ āĻ•āĻ¸ā§āϟ 12 āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻŽāĻžāĻĒ āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝ āĻ•āϰ⧇āĨ¤\n- Argon2id-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻŦ⧇āϏāϞāĻžāχāύ āĻšāϞ⧋ āĻŽā§‡āĻŽāϰāĻŋ āĻ•āϝāĻŧ⧇āĻ• āĻĻāĻļāĻŽā§‡āĻ—āĻžāĻŦāĻžāχāϟ āĻĨ⧇āϕ⧇ āĻ•āϝāĻŧ⧇āĻ• āĻļāϤ MB āĻĒāϰāĻŋāϏāϰ⧇, āϟāĻžāχāĻŽ āĻ•āĻ¸ā§āϟ 2–4, āĻāĻŦāĻ‚ āĻĒā§āϝāĻžāϰāĻžāϞāĻžāϞāĻŋāϜāĻŽ 1–2āĨ¤\n\nāĻāϗ⧁āϞ⧋ āύ⧀āϤāĻŋāĻŽāĻžāϞāĻž āύāϝāĻŧ, āĻļ⧁āϰ⧁ āĻ•āϰāĻžāϰ āĻŦāĻŋāĻ¨ā§āĻĻ⧁ āĻŽāĻžāĻ¤ā§āϰāĨ¤ āϏāĻ āĻŋāĻ• āϏ⧇āϟāĻŋāĻ‚āϏ āĻšāϞ⧋ āϝāĻž āφāĻĒāύāĻžāϰ āĻŸā§āϰāĻžāĻĢāĻŋāĻ•, āĻšāĻžāĻ°ā§āĻĄāĻ“āϝāĻŧā§āϝāĻžāϰ, āĻ“ āĻĒāĻŋāĻ• āϞāĻ—āχāύ āĻŦāĻžāϰ⧇āϰ āϏāĻ™ā§āϗ⧇ āĻ–āĻžāĻĒ āĻ–āĻžāϝāĻŧāĨ¤\n\n## āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻĻ⧁āĻ°ā§āĻŦāϞ āĻ•āϰ⧇ āĻāĻŽāύ āϏāĻžāϧāĻžāϰāĻŖ āϭ⧁āϞāϏāĻŽā§‚āĻš\n\nāĻ…āϧāĻŋāĻ•āĻžāĻ‚āĻļ āĻŦā§āϝāĻ°ā§āĻĨāϤāĻž āϏ⧇āϟāφāĻĒ⧇āϰ āĻĢāĻžāρāĻ• āĻĨ⧇āϕ⧇ āφāϏ⧇, āύāĻž āφāϞāĻ—ā§‹āϰāĻŋāĻĻāĻŽ āĻ•ā§āώāϤāĻŋāĻ—ā§āϰāĻ¸ā§āϤ āĻšāĻ“āϝāĻŧāĻžāϝāĻŧāĨ¤\n\nāϏāĻžāĻ˛ā§āϟ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āϭ⧁āϞ āĻŦāĻĄāĻŧ āĻāĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻžāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄāχ āύāĻŋāĻœā§‡āϰ āφāϞāĻžāĻĻāĻž āϏāĻžāĻ˛ā§āϟ āĻĨāĻžāĻ•āĻž āωāϚāĻŋāϤ āĻāĻŦāĻ‚ āϏ⧇āϟāĻž āĻšā§āϝāĻžāĻļ⧇āϰ āϏāĻ™ā§āϗ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āϏāĻžāĻ˛ā§āϟ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻŦāĻž āĻāĻ•āϟāĻŋ āĻ—ā§āϞ⧋āĻŦāĻžāϞ āϏāĻžāĻ˛ā§āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϞ⧇ āφāĻ•ā§āϰāĻŽāĻŖāĻ•āĻžāϰ⧀āϰāĻž āφāĻĒāύāĻžāϰ āĻ•āĻžāϜ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻ•āĻžāωāĻ¨ā§āϟ āϤ⧁āϞāύāĻž āĻ•āϰāĻž āϏāĻšāϜ āĻ•āϰ⧇ āϤ⧋āϞ⧇āĨ¤\n\nāĻ•āĻ¸ā§āϟ āωāĻĒ⧇āĻ•ā§āώāĻž āφāϰ⧇āĻ•āϟāĻŋ āĻŦā§āϝāĻžāĻĒāĻ• āϏāĻŽāĻ¸ā§āϝāĻžāĨ¤ āĻĻāϞāϗ⧁āϞ⧋ āĻĒā§āϰāĻžāϝāĻŧāχ āĻ•āĻŽ āĻ•āĻ¸ā§āϟ āύāĻŋāϝāĻŧ⧇ āϚāĻžāϞ⧁ āĻ•āϰ⧇ āĻ•āĻžāϰāĻŖ āϞāĻ—āχāύ āĻĻā§āϰ⧁āϤ āϞāĻžāϗ⧇, āϤāĻžāϰāĻĒāϰ āĻ•āĻ–āύāĻ“ āϤāĻž āĻĒ⧁āύāĻ°ā§āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧇ āύāĻžāĨ¤ āĻšāĻžāĻ°ā§āĻĄāĻ“āϝāĻŧā§āϝāĻžāϰ āωāĻ¨ā§āύāϤ āĻšāϝāĻŧ, āφāĻ•ā§āϰāĻŽāĻŖāĻ•āĻžāϰ⧀āϰāĻž āĻŦāĻĄāĻŧ āĻšāϝāĻŧ⧇ āĻ“āϠ⧇, āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āĻāĻ•āϏāĻŽāϝāĻŧ āĻ āĻŋāĻ• āĻšāĻ“āϝāĻŧāĻž āϏ⧇āϟāĻŋāĻ‚āϏ āϏāĻ¸ā§āϤāĻž āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧāĨ¤\n\nArgon2 āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āϟāĻŋāωāύ āĻ•āϰāĻžāĻ“ āϏāĻžāϧāĻžāϰāĻŖâ€”āĻŽā§‡āĻŽāϰāĻŋ āϖ⧁āĻŦ āĻŦ⧇āĻļāĻŋ āĻŦāĻžāĻĄāĻŧāĻžāϞ⧇ āĻ•āĻžāĻ—āĻœā§‡ āĻ­āĻžāϞ⧋ āĻĻ⧇āĻ–āĻžāϞ⧇āĻ“ āĻŦāĻžāĻ¸ā§āϤāĻŦ⧇ āϞāĻ—āχāύ āϧ⧀āϰ āĻšāĻ“āϝāĻŧāĻž, āϰāĻŋāϕ⧁āϝāĻŧ⧇āĻ¸ā§āϟ āĻŦā§āϝāĻžāĻ•āϞāĻ— āĻŦāĻž OOM āϘāϟāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤\n\nāĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāĻŋāĻ‚ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ, āĻŦāĻŋāĻļ⧇āώ āĻ•āϰ⧇ bcrypt-āĻāϰ 72-āĻŦāĻžāχāϟ āφāϚāϰāϪ⧇āĨ¤ āĻĻā§€āĻ°ā§āϘ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻ…āύ⧁āĻŽā§‹āĻĻāύ āĻ•āϰ⧇ āĻ•āĻŋāĻ¨ā§āϤ⧁ āύ⧀āϰāĻŦ⧇ āĻŸā§āϰāĻžāĻ™ā§āϕ⧇āϟ āĻ•āϰāϞ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āϜāĻ¨ā§āϝ āĻŦāĻŋāĻ­ā§āϰāĻžāĻ¨ā§āϤāĻŋ āĻ“ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āĻšā§āϰāĻžāϏ āϘāĻŸā§‡āĨ¤\n\nāĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ• āĻ…āĻ­ā§āϝāĻžāϏ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āϏāĻŽāĻ¸ā§āϝāĻž āĻĒā§āϰāϤāĻŋāϰ⧋āϧ āĻ•āϰ⧇:\n\n- āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āĻ…āύāĻ¨ā§āϝ āϏāĻžāĻ˛ā§āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ (āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āĻĻāĻŋāϝāĻŧ⧇ āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰāĻžāύ)\n- āϞ⧋āĻĄ āĻŸā§‡āĻ¸ā§āϟ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŋāϤ āϏāĻŽāϝāĻŧ āĻĒāϰ⧇ āϏ⧇āϟāĻŋāĻ‚āϏ āĻĒ⧁āύāĻ°ā§āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύ\n- Argon2 āĻŽā§‡āĻŽāϰāĻŋ āϟāĻŋāωāύ āĻ•āϰ⧁āύ āĻĒāĻŋāĻ• āĻŸā§āϰāĻžāĻĢāĻŋāĻ• āĻ…āύ⧁āϏāĻžāϰ⧇, āĻļ⧁āϧ⧁ āϏāĻŋāĻ™ā§āϗ⧇āϞ-āϞāĻ—āχāύ āĻŦ⧇āĻžā§āϚāĻŽāĻžāĻ°ā§āĻ• āύāϝāĻŧ\n- āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ⧇āϰ āϏ⧀āĻŽāĻž āĻ¸ā§āĻĒāĻˇā§āϟ āĻāĻŦāĻ‚ āϧāĻžāϰāĻžāĻŦāĻžāĻšāĻŋāĻ• āĻ•āϰ⧁āύ\n- āϞāĻ—āχāύ āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡āϰ āϚāĻžāϰāĻĒāĻžāĻļ⧇ āĻ•āύāĻ•āĻžāϰ⧇āĻ¨ā§āϏāĻŋ āϞāĻŋāĻŽāĻŋāϟ āĻāĻŦāĻ‚ āĻŽāύāĻŋāϟāϰāĻŋāĻ‚ āϰāĻžāϖ⧁āύ\n\n## āύāĻŋāϰāĻžāĻĒāĻĻ āϏ⧇āϟāφāĻĒ⧇āϰ āĻĻā§āϰ⧁āϤ āĻšā§‡āĻ•āϞāĻŋāĻ¸ā§āϟ\n\nāĻļāĻŋāĻĒ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻ“ āχāύāĻĢā§āϰāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāχ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤ āϤāĻžāϞāĻŋāĻ•āĻžāϟāĻŋ āĻĒāĻžāĻļ⧇ āϰāĻžāϖ⧁āύ:\n\n- āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄā§‡ āĻ…āύāĻ¨ā§āϝ āϏāĻžāĻ˛ā§āϟ, āĻ°ā§āϝāĻžāĻ¨ā§āĻĄāĻŽāĻ­āĻžāĻŦ⧇ āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰ⧇ āĻšā§āϝāĻžāĻļ⧇āϰ āϏāĻ™ā§āϗ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύ\n- āĻĒāĻŋāĻ• āĻŸā§āϰāĻžāĻĢāĻŋāĻ• āϟāĻŋāϕ⧇ āϟāĻŋāϕ⧇ āĻŸā§‡āĻ•āϏāχ āĻāĻŽāύ āĻšā§āϝāĻžāĻļāĻŋāĻ‚ āĻ•āĻ¸ā§āϟ, āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ-āϏāĻĻ⧃āĻļ āĻšāĻžāĻ°ā§āĻĄāĻ“āϝāĻŧā§āϝāĻžāϰ⧇ āϞ⧋āĻĄ āĻŸā§‡āĻ¸ā§āϟ āϏāĻš āϝāĻžāϚāĻžāχ āĻ•āϰāĻž\n- āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰāϗ⧁āϞ⧋ āĻšā§āϝāĻžāĻļ⧇āϰ āϏāĻ™ā§āϗ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ āϰāĻžāϖ⧁āύ āϝāĻžāϤ⧇ āĻĒ⧁āϰāύ⧋ āĻāĻ•āĻžāωāĻ¨ā§āϟ āϝāĻžāϚāĻžāχ āĻ•āϰāĻž āϝāĻžāϝāĻŧ āĻ“ āĻĒāϰ⧇ āĻ•āĻ¸ā§āϟ āĻŦāĻžāĻĄāĻŧāĻžāύ⧋ āϝāĻžāϝāĻŧ\n- āĻ…āύāϞāĻžāχāύ āφāĻ•ā§āϰāĻŽāĻŖ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ, āϰ⧇āϟ-āϞāĻŋāĻŽāĻŋāϟ āĻāĻŦāĻ‚ āĻŦāĻžāϰāĻŦāĻžāϰ āĻŦā§āϝāĻ°ā§āĻĨ āĻšāϞ⧇ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤ āϞāĻ•āφāωāϟ āϏāĻš\n- āφāĻĒāĻ—ā§āϰ⧇āĻĄ āĻĒāĻĨ, āϏāĻžāϧāĻžāϰāĻŖāϤ rehash-on-login\n\nāĻāĻ•āϟāĻŋ āϏāĻšāϜ āϏ⧇āύāϏāĻŋāϟāĻŋ āĻšā§‡āĻ•: āĻ¸ā§āĻŸā§‡āϜāĻŋāĻ‚ āĻŸā§‡āĻ¸ā§āϟ āϚāĻžāϞāĻžāύ āϝ⧇āĻ–āĻžāύ⧇ āϏāĻĢāϞ āĻ“ āĻŦā§āϝāĻ°ā§āĻĨ āωāĻ­āϝāĻŧ āϧāϰāύ⧇āϰ āϞāĻ—āχāύ⧇āϰ āĻŦāĻ°ā§āϧāĻŋāϤ āĻĒāĻžāĻ°ā§āĻļā§āĻŦāĻĒā§āϰāĻŦāĻžāĻš āφāϛ⧇ āĻāĻŦāĻ‚ āĻāĻ¨ā§āĻĄ-āϟ⧁-āĻāĻ¨ā§āĻĄ āĻ˛ā§āϝāĻžāĻŸā§‡āĻ¨ā§āϏāĻŋ, CPU āĻ“ RAM āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻĒāĻ°ā§āϝāĻŦ⧇āĻ•ā§āώāĻŖ āĻ•āϰ⧁āύāĨ¤ āϝāĻĻāĻŋ āϞāĻ—āχāύ āĻĒāĻžāĻĨ āϏāĻ‚āĻ—ā§āϰāĻžāĻŽ āĻ•āϰ⧇, āĻ•āĻ¸ā§āϟ āϟāĻŋāωāύ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϰ⧇āϟ-āϞāĻŋāĻŽāĻŋāϟ āĻ•āĻĄāĻŧāĻž āĻ•āϰ⧁āύāĨ¤ āĻŽā§ŒāϞāĻŋāĻ• āϜāĻŋāύāĻŋāϏāϗ⧁āϞ⧋ āϕ⧇āĻŸā§‡ āĻĢ⧇āϞ⧇ "fix" āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻŦ⧇āύ āύāĻž, āϝ⧇āĻŽāύ āϏāĻžāĻ˛ā§āϟāĨ¤\n\n## āĻŦāĻžāĻ¸ā§āϤāĻŦ āωāĻĻāĻžāĻšāϰāĻŖ: āĻāĻ•āϟāĻŋ āϛ⧋āϟ āĻ“āϝāĻŧ⧇āĻŦ āĻ…ā§āϝāĻžāĻĒ⧇ āϟāĻŋāωāύāĻŋāĻ‚\n\nāĻāĻ•āϟāĻŋ āϛ⧋āϟ SaaS āĻ…ā§āϝāĻžāĻĒ āĻ•āĻ˛ā§āĻĒāύāĻž āĻ•āϰ⧁āύ āϝāĻžāϰ āĻ•āϝāĻŧ⧇āĻ• āĻšāĻžāϜāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āφāϛ⧇āĨ¤ āĻĻāĻŋāύ⧇āϰ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āϏāĻŽāϝāĻŧ āĻŸā§āϰāĻžāĻĢāĻŋāĻ• āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āύāĻŋāωāϜāϞ⧇āϟāĻžāϰ āĻĒāĻžāĻ āĻžāύ⧋āϰ āĻĒāϰ⧇ āĻŦāĻž āĻ•āĻžāĻœā§‡āϰ āĻĻāĻŋāύ⧇āϰ āĻļ⧁āϰ⧁āϤ⧇ āĻĻā§āϰ⧁āϤ āϞāĻ—āχāύ āĻŦāĻ°ā§āϧāĻŋāϤ āĻšāϝāĻŧāĨ¤ āĻāĻ–āĻžāύ⧇āχ āĻĒāĻ›āĻ¨ā§āĻĻāϟāĻŋ āĻ•ā§āϝāĻžāĻĒāĻžāϏāĻŋāϟāĻŋ āĻĒā§āĻ˛ā§āϝāĻžāύāĻŋāĻ‚āϝāĻŧ⧇ āϰ⧂āĻĒ āĻ¨ā§‡ā§ŸāĨ¤\n\nāφāĻĒāύāĻŋ Argon2id āĻŦ⧇āϛ⧇ āύāĻŋāύ āĻ…āĻĢāϞāĻžāχāύ āĻ•ā§āĻ°ā§āϝāĻžāĻ•āĻŋāĻ‚āϝāĻŧ⧇āϰ āĻ–āϰāϚ āĻŦāĻžāĻĄāĻŧāĻžāύ⧋āϰ āϜāĻ¨ā§āϝāĨ¤ āφāĻĒāύāĻžāϰ āĻŦāĻžāĻ¸ā§āϤāĻŦ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āωāĻĒāϰ āĻāĻ•āϟāĻŋ āϟāĻžāĻ°ā§āϗ⧇āϟ āϝāĻžāϚāĻžāχāĻ•āϰāĻŖ āϏāĻŽāϝāĻŧ (āωāĻĻāĻžāĻšāϰāĻŖ: 100–250 ms) āĻŦ⧇āϛ⧇ āύāĻŋāύ, āϤāĻžāϰāĻĒāϰ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰāϗ⧁āϞ⧋ āϟāĻŋāωāύ āĻ•āϰ⧁āύ āϝāĻžāϤ⧇ āϤāĻž āĻŽāĻŋāϟ āĻ•āϰ⧇ āĻāĻŦāĻ‚ RAM āύāϜāϰ⧇ āϰāĻžāϖ⧁āύ, āĻ•āĻžāϰāĻŖ āĻŽā§‡āĻŽāϰāĻŋ āϏ⧇āϟāĻŋāĻ‚āϏ āĻāĻ•āϏāĻžāĻĨ⧇ āĻ•āϤāϗ⧁āϞ⧋ āϞāĻ—āχāύ āĻšā§āϝāĻžāĻ¨ā§āĻĄā§‡āϞ āĻ•āϰāĻž āϝāĻžāϝāĻŧ āϤāĻž āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤\n\nāĻāĻ•āϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ• āϟāĻŋāωāύāĻŋāĻ‚ āϞ⧁āĻĒ:\n\n- āύāĻŽā§āϰ āχāϟāĻžāϰ⧇āĻļāύ āĻ“ āĻĒā§āϝāĻžāϰāĻžāϞāĻžāϞāĻŋāϜāĻŽ āĻĻāĻŋā§Ÿā§‡ āĻļ⧁āϰ⧁ āĻ•āϰ⧁āύ\n- āĻ•āύāĻ•āĻžāϰ⧇āĻ¨ā§āϏāĻŋ āĻ…āύāĻŋāĻļā§āϚāĻŋāϤ āϞāĻžāĻ—āϤ⧇ āĻļ⧁āϰ⧁ āĻ•āϰāϞ⧇ āĻŽā§‡āĻŽāϰāĻŋ āĻŦāĻžāĻĄāĻŧāĻžāύ āϝāϤāĻ•ā§āώāĻŖ āύāĻž āϤāĻž āĻ…āĻ¸ā§āĻŦāĻ¸ā§āϤāĻŋāĻ•āϰ āĻšā§Ÿ\n- āϟāĻžāχāĻŽ āĻ•āĻ¸ā§āϟ āϏ⧂āĻ•ā§āĻˇā§āĻŽ āĻ•āϰ⧇ āĻ āĻŋāĻ• āĻ•āϰāϤ⧇ āχāϟāĻžāϰ⧇āĻļāύ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝ āĻ•āϰ⧁āύ\n- āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϏāĻŋāĻ™ā§āϗ⧇āϞ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āύāϝāĻŧ, āϏāĻŋāĻŽā§āϞ⧇āĻŸā§‡āĻĄ āĻŦāĻžāĻ°ā§āĻĄāĻ¸ā§āĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύ\n\nāφāĻĒāύāĻŋ āϝāĻĻāĻŋ āχāϤ⧋āĻŽāĻ§ā§āϝ⧇ āĻĻ⧁āĻ°ā§āĻŦāϞ āϏ⧇āϟāĻŋāĻ‚āϏ⧇āϰ āĻĒ⧁āϰāύ⧋ āĻšā§āϝāĻžāĻļ āϰāĻžāϖ⧇āύ, āϏ⧇āϗ⧁āϞ⧋ āϝāĻžāϚāĻžāχ āϚāĻžāϞāĻŋāϝāĻŧ⧇ āϝāĻžāύ āĻ•āĻŋāĻ¨ā§āϤ⧁ āϧ⧀āϰ⧇ āϧ⧀āϰ⧇ āφāĻĒāĻ—ā§āϰ⧇āĻĄ āĻ•āϰ⧁āύāĨ¤ āϏāĻĢāϞ āϞāĻ—āχāύ⧇āϰ āĻĒāϰ⧇ āϰāĻŋāĻšā§āϝāĻžāĻļ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āύāϤ⧁āύ āĻŽāĻžāύ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύ; āϏāĻŽāϝāĻŧ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻ•ā§āϰāĻŋāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰāĻž āĻŦāĻžāĻ§ā§āϝ āĻ›āĻžāĻĄāĻŧāĻžāχ āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀ āĻšā§āϝāĻžāĻļ⧇ āϚāϞ⧇ āϝāĻžāĻŦ⧇āĨ¤\n\nāϰāĻŋāϞāĻŋāĻœā§‡āϰ āĻĒāϰ, āϞāĻ—āχāύāϕ⧇ āϝ⧇ āϕ⧋āύāĻ“ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻāύāĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡āϰ āĻŽāϤ⧋ āĻŽāύāĻŋāϟāϰ āĻ•āϰ⧁āύ: āĻŸā§‡āχāϞ āĻ˛ā§āϝāĻžāĻŸā§‡āĻ¨ā§āϏāĻŋ (p95/p99), āĻŦāĻ°ā§āϧāĻŋāϤ āϏāĻŽāϝāĻŧ⧇āϰ CPU āĻ“ RAM, āĻŦā§āϝāĻ°ā§āĻĨ-āϞāĻ—āχāύ⧇āϰ āĻ¸ā§āĻĒāĻžāχāĻ• āĻāĻŦāĻ‚ āĻĒ⧁āϰāύ⧋ āĻšā§āϝāĻžāĻļāϗ⧁āϞ⧋ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻĻā§āϰ⧁āϤ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāϤ āĻšāĻšā§āϛ⧇āĨ¤\n\n## āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āϧāĻžāĻĒ: āύāĻŋāϰāĻžāĻĒāĻĻāĻ­āĻžāĻŦ⧇ āĻļāĻŋāĻĒ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āωāĻ¨ā§āύāϤāĻŋ āĻŦāϜāĻžāϝāĻŧ āϰāĻžāϖ⧁āύ\n\nāφāĻĒāύāĻžāϰ āĻĒāϞāĻŋāϏāĻŋ āϞāĻŋāϖ⧇ āϰāĻžāϖ⧁āύ āĻāĻŦāĻ‚ āĻāϟāĻŋāϕ⧇ āĻœā§€āĻŦāĻ¨ā§āϤ āύ⧀āϤāĻŋāϰ āĻŽāϤ⧋ āĻĻ⧇āϖ⧁āύāĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ: “Argon2id āϏāĻ™ā§āϗ⧇ X āĻŽā§‡āĻŽāϰāĻŋ, Y āχāϟāĻžāϰ⧇āĻļāύ, Z āĻĒā§āϝāĻžāϰāĻžāϞāĻžāϞāĻŋāϜāĻŽâ€ āĻŦāĻž “bcrypt āĻ•āĻ¸ā§āϟ āĻĢā§āϝāĻžāĻ•ā§āϟāϰ N,” āĻāĻŦāĻ‚ āύ⧋āϟ āϰāĻžāϖ⧁āύ āϕ⧋āύ āϤāĻžāϰāĻŋāϖ⧇ āĻāϟāĻŋ āĻŦ⧇āϛ⧇ āύāĻŋā§Ÿā§‡āϛ⧇āύ āĻāĻŦāĻ‚ āĻ•āĻŦ⧇ āĻĒ⧁āύāσāĻĒāĻ°ā§āϝāĻžāϞ⧋āϚāύāĻž āĻ•āϰāĻŦ⧇āύ (āĻĒā§āϰāϤāĻŋ 6–12 āĻŽāĻžāϏ āĻ­āĻžāϞ⧋ āĻļ⧁āϰ⧁)āĨ¤\n\nāφāĻĒāĻ—ā§āϰ⧇āĻĄ āĻĒāĻĨ āϰāĻžāϖ⧁āύ āϝāĻžāϤ⧇ āĻĒ⧁āϰāύ⧋ āĻšā§āϝāĻžāĻļ⧇ āφāϟāϕ⧇ āύāĻž āĻĒāĻĄāĻŧ⧇āύāĨ¤ rehash-on-login āϏāĻšāϜ āĻāĻŦāĻ‚ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻ­āĻžāϞ⧋āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤\n\nāĻāĻ•āϟāĻŋ āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀ āĻšā§āϝāĻžāĻļ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϤāĻž āĻ…āύāϞāĻžāχāύ āĻ…ā§āϝāĻžāĻŦāĻŋāωāϜ āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧇ āύāĻžāĨ¤ āϰ⧇āϟ-āϞāĻŋāĻŽāĻŋāϟ, āϞāĻ•āφāωāϟ, āĻāĻŦāĻ‚ āϏāĻžāĻŦāϧāĻžāύāĻžāĻ¤ā§āĻŽāĻ• āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āϰāĻŋāϏ⧇āϟ āĻĢā§āϞ⧋ āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻŦāĻŋāĻļā§āĻŦ⧇ āĻāĻ•āχāĻ­āĻžāĻŦ⧇ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖāĨ¤\n\nāφāĻĒāύāĻŋ āϝāĻĻāĻŋ AppMaster-āĻāϰ āĻŽāϤ⧋ āύ⧋-āϕ⧋āĻĄ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ āĻĻāĻŋāϝāĻŧ⧇ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰ⧇āύ, āϤāĻ–āύ āϝāĻžāϚāĻžāχ āĻ•āϰ⧇ āĻĻ⧇āϖ⧁āύ āϝ⧇ āφāĻĒāύāĻžāϰ āĻ…āĻĨ⧇āύāϟāĻŋāϕ⧇āĻļāύ āĻŽāĻĄāĻŋāωāϞ āĻĄāĻŋāĻĢāĻ˛ā§āϟāĻ­āĻžāĻŦ⧇ āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻšā§āϝāĻžāĻļāĻŋāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āĻšā§āϝāĻžāĻļāĻŋāĻ‚ āĻ•āĻ¸ā§āϟ āĻ āĻŋāĻ• āϏ⧇āχ āϧāϰāύ⧇āϰ āχāύāĻĢā§āϰāĻžāϏāĻŸā§āϰāĻžāĻ•āϚāĻžāϰ⧇ āϟāĻŋāωāύ āĻ•āϰāĻž āφāϛ⧇ āϝ⧇āĻ–āĻžāύ⧇ āφāĻĒāύāĻŋ āĻĄāĻŋāĻĒā§āϞāϝāĻŧ āĻ•āϰāĻŦ⧇āύāĨ¤ āϏāĻžāĻŽāĻžāĻ¨ā§āϝ āφāĻ—āĻžāĻŽ āĻŸā§‡āĻ¸ā§āϟāĻŋāĻ‚āχ āĻĒā§āϰāĻžāϝāĻŧāĻļāχ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ āϏ⧃āĻˇā§āϟāĻŋ āĻ•āϰ⧇ "āύāĻŋāϰāĻžāĻĒāĻĻ āĻ“ āĻŽāϏ⧃āĻŖ" āĻāĻŦāĻ‚ "āύāĻŋāϰāĻžāĻĒāĻĻ āĻ•āĻŋāĻ¨ā§āϤ⧁ āϞ⧋āĻĄā§‡ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ…āϝ⧋āĻ—ā§āϝ" āĻāϰ āĻŽāĻ§ā§āϝ⧇āĨ¤

āĻĒā§āϰāĻļā§āύ⧋āĻ¤ā§āϤāϰ

What problem does password hashing solve?

āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻšā§āϝāĻžāĻļāĻŋāĻ‚ āφāĻĒāύāĻžāϕ⧇ āĻĒā§āϰāĻ•ā§ƒāϤ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āύāĻž āĻ•āϰ⧇āχ āϞāĻ—āχāύ āϝāĻžāϚāĻžāχ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ āĻ“āϝāĻŧāĻžāύ-āĻ“āϝāĻŧ⧇ āĻšā§āϝāĻžāĻļ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇āύ, āϤāĻžāϰāĻĒāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āχāύāĻĒ⧁āϟ āĻšā§āϝāĻžāĻļ āĻ•āϰ⧇ āĻĢāϞāĻžāĻĢāϞ āĻŽāĻŋāϞāĻŋāϝāĻŧ⧇ āĻĻ⧇āϖ⧇āύ; āϝāĻĻāĻŋ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻĢāĻžāρāϏ āĻšāϝāĻŧ, āĻšāĻžāĻŽāϞāĻžāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻāĻ–āύāĻ“ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻ…āύ⧁āĻŽāĻžāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϏāϰāĻžāϏāϰāĻŋ āĻĒāĻĄāĻŧ⧇ āύ⧇āĻ“āϝāĻŧāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇āĨ¤

Why not just encrypt passwords instead of hashing them?

āĻāύāĻ•ā§āϰāĻŋāĻĒāĻļāύ āĻāĻ•āϟāĻŋ āϕ⧀ āĻĻāĻŋāϝāĻŧ⧇ āωāĻ˛ā§āϟāĻžāύ⧋ āϝāĻžāϝāĻŧ, āϤāĻžāχ āϏ⧇āχ āϕ⧀ āϝāĻĻāĻŋ āϚ⧁āϰāĻŋ āĻŦāĻž āϭ⧁āϞ āĻĒāϰāĻŋāϚāĻžāϞāĻŋāϤ āĻšāϝāĻŧ āϤāĻžāĻšāϞ⧇ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻĒ⧁āύāϰ⧁āĻĻā§āϧāĻžāϰāϝ⧋āĻ—ā§āϝāĨ¤ āĻšā§āϝāĻžāĻļāĻŋāĻ‚ āωāĻĻā§āĻĻ⧇āĻļā§āϝāĻŽā§‚āϞāĻ•āĻ­āĻžāĻŦ⧇ āĻ“āϝāĻŧāĻžāύ-āĻ“āϝāĻŧ⧇: āĻ¸ā§āĻŸā§‹āϰ āĻ•āϰāĻž āĻŽāĻžāύāϕ⧇ "āĻĄāĻŋāĻ•ā§āϰāĻŋāĻĒā§āϟ" āĻ•āϰ⧇ āĻŽā§‚āϞ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāϝāĻŧ āύāĻžāĨ¤

Why is SHA-256 a bad choice for storing passwords?

SHA-256 āĻŽāϤ⧋ āĻĻā§āϰ⧁āϤ āĻšā§āϝāĻžāĻļ āφāĻ•ā§āϰāĻŽāĻŖāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻĒāĻ›āĻ¨ā§āĻĻ, āĻ•āĻžāϰāĻŖ āϤāĻžāϰāĻž āĻ¸ā§āĻŸā§‹āϞ⧇āύ āĻšā§āϝāĻžāĻļ āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āĻ…āĻĢāϞāĻžāχāύāĻ­āĻžāĻŦ⧇ āϖ⧁āĻŦ āĻĻā§āϰ⧁āϤ āĻ…āύ⧁āĻŽāĻžāύ āϚāĻžāϞāĻžāϤ⧇ āĻĒāĻžāĻ°ā§‡â€”āĻŦāĻŋāĻļ⧇āώ āĻ•āϰ⧇ GPU āĻĻāĻŋāϝāĻŧ⧇āĨ¤ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻšā§āϝāĻžāĻļāϗ⧁āϞ⧋ āχāĻšā§āĻ›āĻžāĻ•ā§ƒāϤāĻ­āĻžāĻŦ⧇ āϧ⧀āϰ āĻšāĻ“āϝāĻŧāĻž āωāϚāĻŋāϤ (āĻāĻŦāĻ‚ āφāĻĻāĻ°ā§āĻļāĻ­āĻžāĻŦ⧇ āĻŽā§‡āĻŽāϰāĻŋ-āĻšāĻžāĻ°ā§āĻĄ) āϝāĻžāϤ⧇ āĻŦāĻĄāĻŧ āĻ¸ā§āϕ⧇āϞ āĻ…āύ⧁āĻŽāĻžāύ āĻŦā§āϝāϝāĻŧāĻŦāĻšā§āϞ āĻšāϝāĻŧāĨ¤

What is a salt, and does it actually make passwords safer?

āϏāĻžāĻ˛ā§āϟ āĻšāϞ⧋ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄā§‡āϰ āϏāĻžāĻĨ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ āĻāĻ•āϟāĻŋ āĻ…āύāĻ¨ā§āϝ, āĻ°ā§āϝāĻžāĻ¨ā§āĻĄāĻŽ āĻ­ā§āϝāĻžāϞ⧁āĨ¤ āĻāϟāĻŋ āĻāĻ•āχ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄāϕ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻšā§āϝāĻžāĻļ āϤ⧈āϰāĻŋāϰ āĻĨ⧇āϕ⧇ āĻŦāĻŋāϰāϤ āϰāĻžāϖ⧇ āĻāĻŦāĻ‚ āφāϗ⧇āĻ•āĻžāϰ āĻĒā§āϰāĻŋāĻĄā§‡āϟāĻžāĻ°ā§āĻŽāĻŋāĻ¨ā§āĻĄ āĻŸā§‡āĻŦāĻŋāϞāϗ⧁āϞ⧋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϰ⧋āϧ āĻ•āϰ⧇, āϤāĻŦ⧇ āϤāĻž āĻĻ⧁āĻ°ā§āĻŦāϞ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄāϕ⧇ āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀ āĻ•āϰ⧇ āύāĻžâ€”āĻāϟāĻŋ āĻŽā§‚āϞāϤ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻĢāĻžāρāϏ⧇āϰ āĻĒāϰ āφāĻ•ā§āϰāĻŽāĻŖāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻ•āĻžāϜ āĻŦāĻžāĻĄāĻŧāĻžāϝāĻŧāĨ¤

When should I choose Argon2id vs bcrypt?

āφāĻĒāύāĻžāϰ āĻ¸ā§āĻŸā§āϝāĻžāĻ• āϝāĻĻāĻŋ Argon2id āĻ­āĻžāϞāĻ­āĻžāĻŦ⧇ āϏāĻžāĻĒā§‹āĻ°ā§āϟ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āφāĻĒāύāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āύāĻŋāϰāĻžāĻĒāĻĻāĻ­āĻžāĻŦ⧇ āϟāĻŋāωāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āϤāĻŦ⧇ Argon2id āĻŦ⧇āϛ⧇ āύāĻŋāĻ¨â€”āĻ•āĻžāϰāĻŖ āĻāϟāĻž āϏāĻŽāĻžāĻ¨ā§āϤāϰāĻžāϞ āĻ•ā§āĻ°ā§āϝāĻžāĻ•āĻŋāĻ‚-āϕ⧇ āĻĒā§āϰāϤāĻŋāϰ⧋āϧ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻžāĨ¤ āϝāĻĻāĻŋ āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝ āĻĻāϰāĻ•āĻžāϰ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āϏāĻšāϜ āϟāĻŋāωāύāĻŋāĻ‚ āĻŽāĻĄā§‡āϞ āϚāĻžāύ, āϤāĻžāĻšāϞ⧇ bcrypt āĻŦ⧇āϛ⧇ āύāĻŋāύ āĻāĻŦāĻ‚ āϝāĻĨ⧇āĻˇā§āϟ āωāĻšā§āϚ āĻ•āĻ¸ā§āϟ āĻĢā§āϝāĻžāĻ•ā§āϟāϰ āϏ⧇āϟ āĻ•āϰ⧁āύāĨ¤

What’s the big gotcha with bcrypt and long passwords?

bcrypt-āĻāϰ āĻāĻ•āϟāĻŋ āĻŦāĻĄāĻŧ āĻāĻžāĻŽā§‡āϞāĻž āĻšāϞ⧋ 72-āĻŦāĻžāχāϟ āϏ⧀āĻŽāĻž: āĻāϟāĻŋ āϕ⧇āĻŦāϞ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄā§‡āϰ āĻĒā§āϰāĻĨāĻŽ 72 āĻŦāĻžāχāϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻŦāĻžāĻ•āĻŋ āωāĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰ⧇āĨ¤ āϚāĻŽāϕ⧇ āϝāĻžāĻ“āϝāĻŧāĻžāϰ āĻāĻĄāĻŧāĻžāϤ⧇ āĻŦāĻžāχāĻŸā§‡ āĻ¸ā§āĻĒāĻˇā§āϟ āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ Enforce āĻ•āϰ⧁āύ āĻŦāĻž āĻĻā§€āĻ°ā§āϘ āχāύāĻĒ⧁āϟāϗ⧁āϞ⧋ āĻāĻ•āϏāĻ™ā§āϗ⧇ āĻšā§āϝāĻžāĻ¨ā§āĻĄā§‡āϞ āĻ•āϰ⧁āύ āϝāĻžāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰāĻž āύ⧀āϰāĻŦ⧇ āĻŸā§āϰāĻžāĻ™ā§āϕ⧇āĻŸā§‡āĻĄ āύāĻž āĻšāϝāĻŧāĨ¤

Which Argon2id parameter matters most, and why?

Argon2id-āĻ āĻŽā§‡āĻŽāϰāĻŋ āĻšāϞ⧋ āĻĒā§āϰāϧāĻžāύ āϞāĻŋāĻ­āĻžāϰ, āĻ•āĻžāϰāĻŖ āĻāϟāĻŋ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻ…āύ⧁āĻŽāĻžāύ⧇āϰ āϜāĻ¨ā§āϝ RAM āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻāχ āĻ•āĻžāϰāϪ⧇ āφāĻ•ā§āϰāĻŽāĻŖāĻ•āĻžāϰ⧀āϰāĻž āĻ…āύ⧇āĻ• āĻ…āύ⧁āĻŽāĻžāύ āϏāĻŽāĻžāĻ¨ā§āϤāϰāĻžāϞ⧇ āϚāĻžāϞāĻžāϤ⧇ āϗ⧇āϞ⧇ āĻŦā§āϝāϝāĻŧ āĻŦāĻžāĻĄāĻŧā§‡â€”RAM āĻ“ āĻŦā§āϝāĻžāĻ¨ā§āĻĄāωāχāĻĨ āϏāĻžāĻļā§āϰāϝāĻŧ āĻ•āϰ⧇ āύāĻžāĨ¤ āϤāĻŦ⧇ āϖ⧁āĻŦ āĻŦ⧇āĻļāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϏ⧇āϟ āĻ•āϰāϞ⧇ āφāĻĒāύāĻžāϰ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻāĻ• āϏāĻŽāϝāĻŧ⧇ āĻ•āĻŽ āĻ•āύāĻ•āĻžāϰ⧇āĻ¨ā§āϟ āϞāĻ—āχāύ āĻšā§āϝāĻžāĻ¨ā§āĻĄā§‡āϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇, āϤāĻžāχ āĻĒāĻŋāĻ• āĻŸā§āϰāĻžāĻĢāĻŋāĻ• āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ āϟāĻŋāωāύ āĻ•āϰ⧁āύāĨ¤

How slow should password hashing be in a web backend?

āφāĻĒāύāĻžāϰ āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻĄā§‡āĻĒā§āϞāϝāĻŧāĻŽā§‡āĻ¨ā§āϟ āĻšāĻžāĻ°ā§āĻĄāĻ“āϝāĻŧā§āϝāĻžāϰ⧇āϰ āωāĻĒāϰ āĻĒā§‚āĻ°ā§āĻŦāύāĻŋāĻ°ā§āϧāĻžāϰāĻŋāϤ āϝāĻžāϚāĻžāχ āϏāĻŽāϝāĻŧ āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰ⧁āύ; āϏāĻžāϧāĻžāϰāĻŖāϤ āĻĒā§āϰāϤāĻŋ āĻšā§‡āĻ• ~100–300 ms āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰāĻž āĻšāϝāĻŧ, āϤāĻžāϰāĻĒāϰ āĻ•āύāĻ•āĻžāϰ⧇āĻ¨ā§āϏāĻŋ āϏāĻš āϞ⧋āĻĄ-āĻŸā§‡āĻ¸ā§āϟ āĻ•āϰ⧁āύāĨ¤ āϏāĻ āĻŋāĻ• āϏ⧇āϟāĻŋāĻ‚āϏ āĻšāϞ⧋ āϤāĻž āϝāĻž āϞāĻ—āχāύ āĻŦāĻžāϰ⧇ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻļā§€āϞ āĻĨāĻžāϕ⧇ āĻāĻŦāĻ‚ āĻ…āĻĢāϞāĻžāχāύ āĻ…āύ⧁āĻŽāĻžāύāϕ⧇ āĻŦā§āϝāϝāĻŧāĻŦāĻšā§āϞ āĻ•āϰ⧇ āϤ⧋āϞ⧇āĨ¤

How do I upgrade hashing settings without forcing everyone to reset passwords?

āĻšā§āϝāĻžāĻļ⧇āϰ āφāϞāĻ—ā§‹āϰāĻŋāĻĻāĻŽ āĻ“ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰāϟāĻŋ āĻšā§āϝāĻžāĻļ⧇āϰ āϏāĻ™ā§āϗ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύ āϝāĻžāϤ⧇ āφāĻĒāύāĻŋ āĻĒ⧁āϰāύ⧋ āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āϟ āϝāĻžāϚāĻžāχ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāĻŦāĻ‚ āĻĒāϰ⧇ āĻ•āĻ¸ā§āϟ āĻŦāĻžāĻĄāĻŧāĻžāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āϏāĻžāϧāĻžāϰāĻŖ āĻĒāĻĻā§āϧāϤāĻŋ āĻšāϞ rehash-on-login: āϏāĻĢāϞ āϞāĻ—āχāύ⧇āϰ āĻĒāϰ, āϝāĻĻāĻŋ āĻ¸ā§āĻŸā§‹āϰ āĻ•āϰāĻž āĻšā§āϝāĻžāĻļ āφāĻĒāύāĻžāϰ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āύ⧀āϤāĻŋāϰ āϤ⧁āϞāύāĻžāϝāĻŧ āĻĻ⧁āĻ°ā§āĻŦāϞ āĻšāϝāĻŧ, āϤāĻ–āύ āύāϤ⧁āύ āϏ⧇āϟāĻŋāĻ‚āϏ āĻĻāĻŋāϝāĻŧ⧇ āϰāĻŋāĻšā§āϝāĻžāĻļ āĻ•āϰ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύāĨ¤

What are the most common mistakes that weaken password storage?

āϏāĻžāϧāĻžāϰāĻŖ āϭ⧁āϞāϗ⧁āϞ⧋āϰ āĻŽāĻ§ā§āϝ⧇ āφāϛ⧇: āϏāĻžāĻ˛ā§āϟ āύāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻŦāĻž āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž, āĻ•āĻŽ āĻ•āĻ¸ā§āϟ āύāĻŋāϝāĻŧ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇ āĻ•āĻ–āύāĻ“ āϤāĻž āĻĒ⧁āύāσāĻĒāĻ°ā§āϝāĻžāϞ⧋āϚāύāĻž āύāĻž āĻ•āϰāĻž, āĻāĻŦāĻ‚ Argon2-āϕ⧇ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āϟāĻŋāωāύ āĻ•āϰ⧇ āĻŽā§‡āĻŽāϰāĻŋ āĻāϤ āĻŦ⧇āĻļāĻŋ āĻ•āϰāĻž āϝ⧇ āϞāĻ—āχāύ āĻ¸ā§āĻĒāĻžāχāĻ• āϏāĻŽā§Ÿ āφāωāϟ āĻŦāĻž OOM āĻšāϝāĻŧāĨ¤ bcrypt-āĻāϰ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āφāϚāϰāĻŖāĻ“ āύāϜāϰ āϰāĻžāĻ–āĻž āϜāϰ⧁āϰāĻŋāĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻž āϞāĻ—āχāύ āĻāύāĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āϟāϕ⧇ āϰ⧇āϟ-āϞāĻŋāĻŽāĻŋāϟ āĻ“ āĻļāĻ°ā§āϟ āϞāĻ•āφāωāϟ āĻĻāĻŋāϝāĻŧ⧇ āϰāĻ•ā§āώāĻž āĻ•āϰ⧁āύāĨ¤

āĻļ⧁āϰ⧁ āĻ•āϰāĻž āϏāĻšāϜ
āĻ•āĻŋāϛ⧁ āφāĻļā§āϚāĻ°ā§āϝāϜāύāĻ•āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ

āĻŦāĻŋāύāĻžāĻŽā§‚āĻ˛ā§āϝ⧇āϰ āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāύāĻž āϏāĻš āĻ…ā§āϝāĻžāĻĒāĻŽāĻžāĻ¸ā§āϟāĻžāϰ⧇āϰ āϏāĻžāĻĨ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύāĨ¤
āφāĻĒāύāĻŋ āϝāĻ–āύ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ āĻšāĻŦ⧇āύ āϤāĻ–āύ āφāĻĒāύāĻŋ āϏāĻ āĻŋāĻ• āϏāĻĻāĻ¸ā§āϝāϤāĻž āĻŦ⧇āϛ⧇ āύāĻŋāϤ⧇ āĻĒāĻžāϰ⧇āύ⧎

āĻāĻŦāĻžāϰ āĻļ⧁āϰ⧁ āĻ•āϰāĻž āϝāĻžāĻ•
bcrypt āĻŦāύāĻžāĻŽ Argon2: āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻšā§āϝāĻžāĻļāĻŋāĻ‚ āϏ⧇āϟāĻŋāĻ‚āϏ āĻŦ⧇āϛ⧇ āύ⧇āĻ“ā§ŸāĻž | AppMaster