이게 뭔가요?
해시 함수는 임의 길이의 입력을 고정 길이의 지문(fingerprint)으로 바꾸는 일방향 함수입니다. 같은 입력은 항상 같은 해시를 내지만, 해시에서 원본을 되돌릴 수는 없습니다. 이 도구는 입력한 텍스트의 MD5·SHA-1·SHA-256·SHA-512 해시를 즉시 계산해 보여줍니다. SHA 계열은 브라우저의 표준 crypto.subtle API로, MD5는 내장 구현으로 처리하며 전부 로컬에서 동작합니다.
언제 쓰나요?
다운로드한 파일이나 문자열의 무결성을 체크섬으로 확인할 때, 캐시 키나 콘텐츠 식별자를 만들 때, 어떤 값이 특정 해시와 일치하는지 대조할 때 씁니다.
실무에서 자주 틀리는 점
- MD5·SHA-1을 보안에 사용. MD5와 SHA-1은 충돌이 발견되어 서명·비밀번호 저장에는 부적합합니다. 이 둘은 체크섬 같은 비보안 용도로만 쓰세요.
- 비밀번호를 그냥 해싱. 사용자 비밀번호는 SHA-256으로 한 번 해싱하는 것으로 부족합니다. bcrypt·scrypt·Argon2 같은 솔트 + 느린 해시를 써야 무차별 대입을 막습니다.
- 인코딩 차이. 같은 글자라도 UTF-8과 UTF-16, 또는 끝의 개행 유무에 따라 해시가 달라집니다. 값이 안 맞으면 바이트 표현부터 의심하세요.
- 대소문자. 해시를 16진수 문자열로 비교할 때 한쪽만 대문자면 불일치가 납니다.
실무에서 — 큰 파일을 나눠 받은 뒤 SHA-256으로 체크섬을 대조해 중간에 깨지지 않았는지 확인하곤 한다. 반대로 예전 코드에서 사용자 비밀번호를 SHA-256으로 딱 한 번 해싱해 저장한 걸 발견하고, 솔트 없는 단일 해시는 무차별 대입에 약하다는 점 때문에 bcrypt로 교체한 적이 있다. MD5를 무결성용이 아니라 보안용으로 쓰던 오래된 코드도 그때 같이 걷어냈다.