Argon2 해시 검증|비밀번호와 인코딩된 해시 비교

비밀번호와 Argon2 인코딩 해시($argon2id$...)를 입력해 일치 여부를 확인합니다. 계산은 브라우저에서만 이루어져 서버로 전송되지 않습니다.


Argon2 해시 검증 팁

  • 검증에는 Argon2 해시 계산 도구로 생성한 인코딩된 해시($argon2id$로 시작하는 문자열)를 그대로 붙여넣으세요.
  • 인코딩된 해시에는 변형·메모리 비용·반복 횟수·솔트 정보가 모두 포함되어 있어, 검증 시 이 매개변수들을 따로 지정할 필요가 없습니다.
  • 해시 형식이 올바르지 않은 경우(복사 시 누락, 줄바꿈 혼입 등) 오류 메시지가 표시됩니다. 전체 문자열을 정확하게 복사했는지 확인해 주세요.
  • 일치하지 않는다는 결과가 나왔다면 비밀번호의 대소문자나 앞뒤 공백 문자가 의도치 않게 포함되지 않았는지 확인해 보세요.

자주 묻는 질문

해시 계산은 비밀번호로부터 새로운 해시 값을 생성하는 것이고, 검증은 기존 해시 값과 비밀번호가 일치하는지 판단하는 과정입니다. 신규 가입 시에는 해시를 생성·저장하고, 로그인 시에는 검증만 수행하는 것이 일반적인 사용 방식입니다.

입력한 해시가 $argon2id$·$argon2i$·$argon2d$ 중 하나로 시작하는 올바른 인코딩 형식이 아닐 때 표시됩니다. 복사 시 문자가 빠지지 않았는지, 앞뒤에 불필요한 공백이나 줄바꿈이 포함되지 않았는지 확인해 주세요.

대소문자 차이, 전각·반각 문자 차이, 앞뒤 공백 문자 혼입 등이 주된 원인입니다. 비밀번호는 한 글자만 달라도 일치하지 않으므로 원본 문자열을 다시 확인해 주세요.

아니요. 입력한 내용은 모두 브라우저 내 WebAssembly에서 처리되며, 서버로 전송되거나 저장되는 일은 전혀 없습니다.

짝을 이루는 Argon2 해시 계산 도구를 이용해 주세요. Argon2id・Argon2i・Argon2d 세 가지 방식을 모두 지원합니다.
ツールくん

여담이지만 ― 비밀번호는 왜 "해시 비교"만으로 검증할 수 있을까

비밀번호 검증은 겉보기에는 "저장된 비밀번호와 입력된 비밀번호를 직접 비교"하는 과정처럼 보이지만, 실제로는 전혀 다른 방식으로 이루어집니다. 서버(또는 이 도구처럼 클라이언트 측에서 처리하는 경우)는 입력된 비밀번호를 저장 시와 동일한 알고리즘·동일한 솔트로 다시 해시화한 뒤, 그 결과가 저장되어 있는 해시 값과 일치하는지만 비교합니다. 원래의 비밀번호 자체는 한 번도 '비교'의 대상이 되지 않으며, 해시 값끼리의 일치 여부만 판단하면 되는 것이 이 방식의 장점입니다.

이러한 방식이 성립하는 이유는 Argon2와 같은 해시 함수가 '결정적'(deterministic)이기 때문입니다. 동일한 입력·동일한 솔트·동일한 매개변수라면 항상 동일한 출력이 나옵니다. 인코딩된 해시 문자열($argon2id$v=19$m=...$salt$hash 형식)에는 계산 시 사용된 솔트와 매개변수가 모두 담겨 있기 때문에, 검증 시 원래의 매개변수를 따로 지정할 필요 없이 해시 문자열만으로 완전한 재계산이 가능합니다.

이러한 '일방향성'(해시로부터 원래의 비밀번호를 역산할 수 없음)과 '결정성'(동일한 입력이면 동일한 출력)이라는 두 가지 특성이 있기에, 서비스 운영자는 사용자의 원본 비밀번호를 전혀 저장하지 않고도 로그인 시 검증을 안전하게 수행할 수 있습니다. 데이터베이스가 유출되더라도 공격자가 손에 넣는 것은 해시 값뿐이며, Argon2처럼 계산 비용이 높은 알고리즘이라면 원래의 비밀번호를 복원하는 무차별 대입 공격에 매우 오랜 시간이 걸립니다.