Argon2 비밀번호 해시 생성기 & 검증기

비밀번호를 Argon2id·Argon2i·Argon2d로 조절 가능한 메모리·시간·병렬성 비용에 맞춰 해시하거나, 기존 $argon2 PHC 해시와 대조해 검증합니다.

Argon2 해시 생성

비워 두면 해시할 때마다 16바이트 무작위 솔트를 새로 만듭니다. 직접 넣는 솔트는 8바이트 이상이어야 합니다. 기존 해시를 똑같이 다시 만들려면 Base64를 고르고, 그 해시에서 m=…,t=…,p=…$ 바로 뒤 구간을 붙여넣으세요.

19456 KiB는 19 MiB입니다. 19456 KiB(19 MiB)에 반복 2회·병렬성 1이 OWASP가 권장하는 Argon2id 최소 설정이며, 노트북에서 1초가 채 걸리지 않습니다. 메모리를 늘리면 공격자의 추측 1회마다 RAM이 더 들고, 여기서도 그만큼 더 오래 걸립니다 — 계산은 이 기기에서 합니다.

Argon2는 일부러 느리고 메모리를 많이 씁니다. 추측 1회마다 공격자에게 CPU 시간과 RAM을 함께 소모시키기 때문입니다. 인코딩 문자열에는 변형·솔트·모든 비용 파라미터가 담겨 있어 나중에 검증하는 데 이것만 있으면 됩니다.


비밀번호와 해시 대조

무료 Argon2 해시 생성기 & 검증기 — 업로드 없음

Argon2는 2015년 비밀번호 해싱 대회(PHC) 우승 알고리즘으로, 오늘날 비밀번호 저장에 가장 먼저 권장되는 방식입니다. 이 도구는 개발에서 매일 필요한 두 가지를 처리합니다 — 비밀번호로 Argon2 해시를 생성하고, 어떤 비밀번호가 기존 해시와 일치하는지 검증합니다. 둘 다 Argon2의 WebAssembly 빌드로 브라우저에서 전부 실행되며, 비밀번호는 기기를 벗어나지 않습니다. bcrypt와 용도가 같지만 더 새롭고 메모리를 많이 쓰는 알고리즘입니다.

Argon2가 메모리 경성(memory-hard)인 이유

MD5·SHA-256 같은 빠른 해시는 공격자가 값싼 GPU로 초당 수십억 번 추측하게 해줍니다. Argon2는 추측 1회마다 CPU 시간뿐 아니라 큰 규모의 조절 가능한 메모리까지 일부러 소모하므로 GPU·ASIC으로 병렬화하는 비용이 큽니다. 또 모든 해시에 무작위 솔트가 포함되어 같은 비밀번호도 매번 다른 해시가 나오고, 알고리즘을 다시 돌려야만 확인할 수 있습니다 — "복호화"는 불가능합니다.

Argon2id · Argon2i · Argon2d

Argon2id는 비밀번호 저장에 권장되는 기본값입니다. 부채널 타이밍 공격에 강한 Argon2i의 데이터 독립적 메모리 접근과, GPU 크래킹에 강한 Argon2d의 데이터 의존적 접근을 결합합니다. 부채널 공격에 대한 저항만 중요할 때 Argon2i를, 신뢰할 수 없는 부채널이 없는 작업(예: 작업증명)에는 Argon2d를 고르세요.

메모리·반복·병렬성 고르기

세 가지 비용 파라미터가 보안과 속도를 맞바꿉니다. 메모리(KiB)가 가장 효과가 큰 값입니다 — OWASP는 Argon2id에 최소 19456 KiB(19 MiB)와 반복 2회를 권장합니다. 반복(시간 비용)은 그 메모리를 몇 번 훑는지이고, 병렬성은 레인 수입니다. 값이 클수록 크래킹에 강하지만 느리며, 연산이 기기에서 일어나므로 매우 큰 메모리는 브라우저에서 눈에 띄게 시간이 걸립니다. 페이지 맨 아래의 지우기 버튼은 모든 칸을 비우고 변형·비용·해시 길이·솔트 설정을 페이지를 처음 열었을 때로 되돌리며, 해시나 검증이 진행 중일 때는 누를 수 없습니다.

인코딩된 해시의 구조

결과는 $argon2id$v=19$m=19456,t=2,p=1$<솔트>$<해시> 같은 표준 PHC 문자열입니다 — 변형, 버전, 메모리 / 시간 / 병렬성 비용, 그리고 base64 솔트와 해시 순입니다. 검증에 필요한 모든 것이 이 한 줄에 담겨 있어 그대로 저장했다가 나중에 비밀번호를 대조할 수 있습니다. 그 아래에는 솔트와 파라미터를 뺀 해시 바이트(다이제스트)만 따로 16진수로도 보여 줍니다.

개인정보 보호

비밀번호는 민감하므로 입력한 내용은 어디에도 전송되지 않습니다 — 해시와 검증은 브라우저에서 로컬로 이뤄집니다. 그래서 가입할 필요가 없습니다.

자주 묻는 질문

Argon2 해시를 복호화하거나 되돌릴 수 있나요?

아니요. Argon2는 암호화 알고리즘이 아니어서 결과를 비밀번호로 되돌릴 방법이 없습니다. 검증은 $argon2… 문자열 전체를 WebAssembly로 빌드한 hash-wasm에 넘기고, 여기서 변형·메모리·반복·병렬성·솔트를 읽어 후보를 해시해 비교합니다.

Argon2id·Argon2i·Argon2d 중 무엇을 써야 하나요?

비밀번호 저장에는 Argon2id를 쓰세요 — 권장 기본값이며 나머지 두 변형의 장점을 결합합니다. 부채널 타이밍 공격에 대한 저항만 중요할 때 Argon2i를, 신뢰할 수 없는 부채널이 없는 작업(예: 작업증명)에는 Argon2d를 고르세요.

해시 길이를 정하거나 솔트를 직접 넣을 수 있나요?

네. 해시 길이를 따로 정할 수 있고, 솔트 칸에는 텍스트·hex·Base64로 넣을 수 있습니다. 기존 해시의 솔트를 붙여 넣고 같은 설정을 쓰면 그 해시가 그대로 다시 나옵니다. 솔트를 비워 두면 무작위로 뽑습니다.

바로 고를 수 있는 권장 비용 설정이 있나요?

네. 비용 필드 위의 비용 프리셋 목록에서 고르면 메모리·반복 횟수·병렬성이 공개된 권장값으로 함께 바뀝니다. 이 페이지의 기본값인 OWASP 최소 권장과, 반복을 줄이는 대신 메모리를 늘린 OWASP 설정, libsodium의 대화형(interactive)·보통(moderate)·민감(sensitive) 한도, RFC 9106이 메모리가 적을 때 권하는 설정이 들어 있습니다. 각 항목에는 MiB 단위 메모리와 반복 횟수, 병렬성이 함께 적혀 있고, 값을 직접 고치면 목록이 직접 설정 (입력한 값)으로 바뀝니다. 큰 프리셋일수록 브라우저에서 눈에 띄게 시간이 걸립니다.

설정을 공유할 수 있나요?

네. 변형·메모리·반복·병렬성·해시 길이는 설정하는 대로 페이지 주소에 담기므로, 페이지 맨 아래 지우기 옆의 링크 복사로 그대로 넘길 수 있습니다. 비밀번호와 솔트는 절대 주소에 들어가지 않습니다.