Argon2 해시
최신 비밀번호 해시 표준 Argon2id로 해시를 만들고 검증합니다.
비밀번호 해시 만들기
비밀번호를 입력하면 여기에 해시가 나타납니다.
매개변수
해시에는 m=19456(KiB)
메모리 레인 수입니다. 여기서는 차례로 계산하지만 서버는 동시에 돌릴 수 있습니다. 해시가 달라지므로 서버 설정과 맞추세요.
해시할 때마다 새 무작위 16바이트.
비밀번호와 해시 대조
PHC 문자열: $argon2id$, $argon2i$, $argon2d$. 매개변수는 해시에서 읽습니다.
비밀번호와 해시를 입력하면 맞는지 확인합니다.
Argon2는 Password Hashing Competition 우승 알고리즘으로 RFC 9106에 표준으로 정리되었습니다. 일부러 느리고 메모리를 많이 쓰게 만들어 GPU로 비밀번호를 대입하는 비용을 크게 높입니다. 이 페이지는 고른 매개변수로 Argon2 해시를 만들어 비밀번호 라이브러리가 저장하는 PHC 문자열($argon2id$v=19$m=…,t=…,p=…$솔트$해시)과 16진수 원본 해시로 보여 주고, 기존 PHC 문자열과 비밀번호가 맞는지도 검증합니다. 브라우저 안에서 계산하므로 비밀번호가 기기 밖으로 나가지 않으며, 무료이고 가입도 필요 없습니다.
Argon2 해시 만들고 검증하는 방법
- 비밀번호를 입력하면 바로 해시와 이 기기에서 걸린 시간이 나타납니다.
- 프리셋을 고르거나 서버 설정에 맞춰 메모리·반복 횟수·병렬도를 조절합니다.
- PHC 문자열, 또는 16진수 해시와 솔트를 복사합니다.
- 저장된 해시를 확인하려면 비밀번호와 해시 대조에 비밀번호와 해시를 넣습니다. 일치 또는 불일치가 표시됩니다.
주요 기능
- Argon2id(기본), Argon2i, Argon2d, 버전 19
- 프리셋: OWASP 최소(19MiB, t=2, p=1), RFC 9106 저메모리(64MiB, t=3, p=4), 높음(256MiB, t=3, p=4)
- 메모리 1MiB–1GiB, 반복 1–16, 병렬도 1–16, 해시 길이 4–128바이트
- 무작위 16바이트 솔트, 또는 텍스트·16진수·Base64로 직접 입력한 솔트(8–1024바이트)
- PHC 문자열과 16진수 해시·솔트를 각각 복사
- $argon2id$·$argon2i$·$argon2d$ 문자열(v=19, v=16) 검증, 매개변수는 해시에서 읽음
개인정보는 안전한가요?
네. Argon2는 브라우저 안에서 WebAssembly로, 백그라운드 워커에서 계산하며 솔트는 브라우저의 안전한 난수 생성기로 만듭니다. 비밀번호는 업로드하거나 저장하지 않습니다.
자주 묻는 질문
Argon2id, Argon2i, Argon2d 중 무엇을 써야 하나요?
Argon2id를 쓰세요. RFC 9106과 OWASP 모두 비밀번호용으로 권장합니다. Argon2i의 부채널 공격 저항과 Argon2d의 GPU 크래킹 저항을 함께 갖습니다. 다른 종류는 기존 시스템에 맞춰야 할 때만 고르세요.
메모리, 반복 횟수, 병렬도는 얼마로 해야 하나요?
OWASP가 제시한 Argon2id 최소값은 19MiB, 반복 2회, 레인 1개입니다. RFC 9106은 메모리가 넉넉하지 않을 때 64MiB, 반복 3회, 레인 4개를 권합니다. 메모리를 늘리는 것이 가장 강한 보호이므로, 서버가 로그인 한 번에 감당할 수 있는 시간이 될 때까지 올리세요.
Argon2와 bcrypt 중 무엇이 좋은가요?
새 시스템이라면 Argon2id입니다. 둘 다 일부러 느리지만 Argon2는 메모리도 많이 써서 GPU로 대입하는 비용이 크고, 72바이트 비밀번호 한도도 없습니다. bcrypt는 더 오래되어 거의 모든 곳에서 지원되며, Argon2를 쓸 수 없는 곳에서는 여전히 괜찮은 선택입니다.
$argon2id$ PHC 문자열이란 무엇인가요?
Argon2 참조 구현이 해시를 저장하는 형식입니다. 종류, 버전(v=19), KiB 단위 메모리(m), 반복 횟수(t), 레인 수(p), 그리고 패딩 없는 Base64로 쓴 솔트와 해시가 차례로 들어갑니다. 여기서 만든 문자열은 같은 입력에 대해 참조 라이브러리(libargon2)가 쓰는 문자열과 글자 하나까지 같고, libsodium의 crypto_pwhash_str_verify로도 검증됩니다(Argon2id·Argon2i, 해시 16바이트 이상).
메모리를 1GiB보다 크게 할 수 없는 이유는요?
해시를 브라우저 탭 안에서 계산하는데, WebAssembly 메모리에는 한계가 있습니다. 한 번에 2GiB를 할당할 수 없고, 휴대폰은 훨씬 적은 양도 거절하곤 합니다. 그래서 이 페이지는 1GiB까지만 쓰며, 그보다 많은 메모리를 요구하는 해시(RFC 9106의 2GiB 권장값 등)는 여기서 만들거나 검증할 수 없습니다.