/ 가이드 / 비밀번호 저장 — 솔트·bcrypt·Argon2로 안전하게

비밀번호를 평문으로 저장하면 데이터베이스가 유출되는 순간 모든 계정이 노출됩니다. 그래서 비밀번호는 해시로 변환해 저장하고, 로그인 시 입력값의 해시를 비교합니다. 원문을 저장하지 않으므로 유출돼도 곧바로 비밀번호를 알 수 없습니다.

하지만 단순 SHA-256 해시만으로는 부족합니다. 같은 비밀번호는 항상 같은 해시를 내므로, 공격자는 흔한 비밀번호의 해시를 미리 계산한 레인보우 테이블로 대량 대조할 수 있습니다. 이를 막으려면 계정마다 무작위 값인 솔트(salt)를 더해 해시해야 합니다.

속도도 문제입니다. SHA-256은 매우 빨라 공격자가 초당 수십억 개를 추측할 수 있습니다. 그래서 비밀번호에는 의도적으로 느린 bcrypt·scrypt·Argon2 같은 전용 해시를 씁니다. 이들은 반복 횟수·메모리 비용을 조절해 무차별 대입을 크게 늦춥니다.

정리하면 비밀번호 저장의 3원칙은 솔트 + 느린 전용 해시 + 충분한 비용 파라미터입니다. 일반 SHA-256/512는 파일 무결성·서명에는 적합하지만 비밀번호 저장에는 Argon2 같은 전용 알고리즘을 사용하세요.

이 알고리즘으로 해시하기