Argon2 해시 생성·검증기 (Argon2id)
Argon2id·Argon2i·Argon2d로 비밀번호를 해시해 $argon2id$ PHC 문자열을 만들거나, 저장된 해시와 비밀번호가 맞는지 확인합니다. 브라우저에서만 실행됩니다.
비밀 키와 연관 데이터는 드물게 쓰이며, 둘 다 $argon2…$ 문자열에 기록되지 않습니다.
솔트는 8~1024바이트여야 합니다.
libargon2(참조 C 구현)와 RFC 9106 테스트 벡터로 확인했습니다. 모두 브라우저에서 실행됩니다.
사용법
- 비밀번호를 입력하고(hex로도 가능), 솔트를 입력하거나 '무작위 솔트'로 새 16바이트를 만듭니다.
- 프리셋을 고르거나 변형·메모리·반복·병렬도·태그 길이를 직접 정한 뒤 '해시'를 누릅니다. 오래 걸리는 설정은 진행률이 표시되고 취소할 수 있습니다.
- 저장된 해시를 확인하려면 '검증'으로 바꾸고 $argon2…$ 문자열과 비밀번호(사용했다면 비밀 키도)를 넣은 뒤 '검증'을 누릅니다.
자세한 설명
펼치기접기
Argon2는 2015년 Password Hashing Competition 우승 알고리즘이며 RFC 9106으로 표준화되었고, OWASP가 비밀번호 저장용으로 권장하는 것은 Argon2id입니다. 이 도구는 페이지용으로 직접 작성한 완전한 구현으로, 비밀번호·8바이트 이상의 솔트·메모리 비용(KiB)·반복 횟수·병렬도를 받아 원시 태그를 hex와 base64로, 그리고 libargon2·argon2-cffi·PHP password_hash·Node argon2 패키지가 저장하고 읽는 $argon2id$v=19$m=…,t=…,p=…$salt$hash 문자열로 출력합니다. 검증 모드는 이 문자열을 해석해 다시 계산하고 비밀번호가 일치하는지 알려 줍니다. 호환성을 위해 Argon2d·Argon2i와 구버전 1.0(v=16), RFC의 선택 항목인 비밀 키와 연관 데이터도 지원합니다. 레인은 스레드가 아니라 차례로 계산하므로 p=4는 4코어 서버와 같은 결과를 내지만 시간은 레인 하나의 4배가 걸립니다. 실제 사용 메모리는 참조 구현과 똑같이 4·p KiB의 배수로 내림됩니다. 브라우저 탭이 한 번에 안정적으로 확보할 수 있는 한계 때문에 상한은 256 MiB이며, 따라서 RFC의 첫 번째 권장값(2 GiB)은 여기서 실행할 수 없습니다. 아무것도 업로드되지 않으며 비밀번호와 비밀 키는 로컬 저장소에 기록되지 않습니다.
자주 묻는 질문
어떤 설정을 써야 하나요?
OWASP의 현재 최소 권장은 Argon2id, 메모리 19 MiB, 반복 2, 병렬도 1이고, RFC 9106의 두 번째 권장은 64 MiB, 반복 3, 레인 4입니다. 둘 다 프리셋 버튼 하나로 설정됩니다. 알맞은 값은 로그인 서버가 동시 요청당 감당할 수 있는 최대 메모리이며, 그 서버에서 해시 한 번이 1초보다 충분히 짧도록 맞추면 됩니다.
왜 서버보다 여기서 더 느린가요?
이 페이지는 단일 스레드의 순수 JavaScript로 레인을 차례로 계산하지만, libargon2는 최적화된 네이티브 코드로 레인마다 스레드를 씁니다. 결과는 같고 시간만 다르므로, 표시되는 시간은 운영 환경 설정의 벤치마크가 아닙니다.
같은 비밀번호인데 매번 해시가 다른 이유는?
솔트가 입력의 일부이기 때문입니다. 솔트를 고정하면 결과도 고정되며, 검증도 그렇게 동작합니다. 솔트와 모든 매개변수가 $argon2id$ 문자열에 들어 있어 검증 쪽이 똑같은 계산을 반복할 수 있습니다.
비밀 키와 연관 데이터는 어디에 쓰이나요?
RFC 9106 정의대로 첫 해시 H0에 들어갑니다. 둘 다 PHC 문자열에는 기록되지 않으므로, 비밀 키로 만든 해시는 같은 키를 제공해야만 검증할 수 있습니다. 서버에서는 이를 데이터베이스 밖에 두는 페퍼로 씁니다.
Argon2id, Argon2i, Argon2d 중 무엇을 쓰나요?
비밀번호에는 Argon2id입니다. Argon2d는 해시하는 데이터로 메모리 블록을 골라 GPU 크래킹에 가장 강하지만 비밀번호에 관한 타이밍 정보가 샐 수 있고, Argon2i는 그 누출이 없지만 시간-메모리 절충 공격에 약합니다. Argon2id는 첫 패스의 앞 절반을 Argon2i처럼, 나머지를 Argon2d처럼 계산합니다.
관련 도구
PBKDF2 키 유도
브라우저에서 PBKDF2-HMAC으로 비밀번호에서 키를 유도합니다. 해시와 반복 횟수, 출력 길이를 고르고 결과를 16진수나 Base64로 읽습니다.
개발
Bcrypt 해시 / 검증
조정 가능한 cost로 bcrypt 해시 생성, 또는 기존 해시와 비밀번호 일치 검증 — 브라우저 안에서 실행.
개발
scrypt 키 유도 (RFC 7914)
브라우저에서 scrypt로 비밀번호로부터 키를 유도하고, 메모리 비용과 PBKDF2·ROMix 중간 단계를 함께 보여 줍니다.
개발
파일 해시 검증
파일 드롭 + 기대 SHA-1/256/384/512 붙여넣기 → 실제 해시 일치 검증. 다운로드한 바이너리 설치 전에 유용.
파일
PKCS#12 키스토어 분석기
.p12/.pfx를 브라우저에서 엽니다. 비밀번호 없이 MAC과 암호 알고리즘을, 입력 후에는 인증서 체인·개인 키·키 일치 여부를 보여줍니다.
개발
OAuth 2.0 PKCE 생성기
OAuth 2.0 PKCE(RFC 7636)용 code_verifier + S256/plain code_challenge 생성. authorization URL과 토큰 교환 curl까지 자동 작성.
네트워크