Argon2 해시 검증|비밀번호와 인코딩된 해시 비교
비밀번호와 Argon2 인코딩 해시($argon2id$...)를 입력해 일치 여부를 확인합니다. 계산은 브라우저에서만 이루어져 서버로 전송되지 않습니다.
Argon2 해시 검증 팁
- 검증에는 Argon2 해시 계산 도구로 생성한 인코딩된 해시($argon2id$로 시작하는 문자열)를 그대로 붙여넣으세요.
- 인코딩된 해시에는 변형·메모리 비용·반복 횟수·솔트 정보가 모두 포함되어 있어, 검증 시 이 매개변수들을 따로 지정할 필요가 없습니다.
- 해시 형식이 올바르지 않은 경우(복사 시 누락, 줄바꿈 혼입 등) 오류 메시지가 표시됩니다. 전체 문자열을 정확하게 복사했는지 확인해 주세요.
- 일치하지 않는다는 결과가 나왔다면 비밀번호의 대소문자나 앞뒤 공백 문자가 의도치 않게 포함되지 않았는지 확인해 보세요.
자주 묻는 질문
여담이지만 ― 비밀번호는 왜 "해시 비교"만으로 검증할 수 있을까
비밀번호 검증은 겉보기에는 "저장된 비밀번호와 입력된 비밀번호를 직접 비교"하는 과정처럼 보이지만, 실제로는 전혀 다른 방식으로 이루어집니다. 서버(또는 이 도구처럼 클라이언트 측에서 처리하는 경우)는 입력된 비밀번호를 저장 시와 동일한 알고리즘·동일한 솔트로 다시 해시화한 뒤, 그 결과가 저장되어 있는 해시 값과 일치하는지만 비교합니다. 원래의 비밀번호 자체는 한 번도 '비교'의 대상이 되지 않으며, 해시 값끼리의 일치 여부만 판단하면 되는 것이 이 방식의 장점입니다.
이러한 방식이 성립하는 이유는 Argon2와 같은 해시 함수가 '결정적'(deterministic)이기 때문입니다. 동일한 입력·동일한 솔트·동일한 매개변수라면 항상 동일한 출력이 나옵니다. 인코딩된 해시 문자열($argon2id$v=19$m=...$salt$hash 형식)에는 계산 시 사용된 솔트와 매개변수가 모두 담겨 있기 때문에, 검증 시 원래의 매개변수를 따로 지정할 필요 없이 해시 문자열만으로 완전한 재계산이 가능합니다.
이러한 '일방향성'(해시로부터 원래의 비밀번호를 역산할 수 없음)과 '결정성'(동일한 입력이면 동일한 출력)이라는 두 가지 특성이 있기에, 서비스 운영자는 사용자의 원본 비밀번호를 전혀 저장하지 않고도 로그인 시 검증을 안전하게 수행할 수 있습니다. 데이터베이스가 유출되더라도 공격자가 손에 넣는 것은 해시 값뿐이며, Argon2처럼 계산 비용이 높은 알고리즘이라면 원래의 비밀번호를 복원하는 무차별 대입 공격에 매우 오랜 시간이 걸립니다.