웹사이트는 비밀번호를 그대로 저장하지 않습니다. 해시로 변환해서 저장합니다. 왜 이렇게 하는지 알아두면 보안 의식이 높아집니다.
평문 저장의 위험
비밀번호를 그대로 저장하면 데이터베이스가 유출됐을 때 모든 비밀번호가 노출됩니다. 많은 사람이 같은 비밀번호를 여러 사이트에서 쓰기 때문에 피해가 커집니다.
해시로 저장하면 원본 비밀번호를 알 수 없습니다. 해시는 단방향이라서 역으로 추적이 불가능합니다.
로그인 과정
로그인할 때 입력한 비밀번호를 해시로 변환하고, 저장된 해시와 비교합니다. 같으면 올바른 비밀번호입니다. 해시 생성기에서 같은 입력은 항상 같은 해시가 나오는 걸 확인할 수 있습니다.
솔트의 역할
같은 비밀번호는 같은 해시가 되므로, 흔한 비밀번호의 해시를 미리 계산해둔 레인보우 테이블 공격이 가능합니다. 이를 막기 위해 솔트(무작위 문자열)를 비밀번호에 추가한 뒤 해시합니다. 온라인 해시 도구로 솔트를 붙인 문자열의 해시가 어떻게 달라지는지 실험해보세요.
해시 생성기 활용 팁
이런 상황에서 해시 생성기를 활용하면 효율적입니다. 먼저 원하는 알고리즘(MD5, SHA-256, SHA-512 등)을 선택하고, 입력값을 넣으면 즉시 해시값을 얻을 수 있습니다. 개발자라면 API 호출 시 서명 검증, 파일 무결성 확인, 비밀번호 해시 테스트 등에 활용할 수 있죠. 비개발자도 다운로드 파일이 변조되지 않았는지 확인할 때 유용합니다. 중요한 건 입력이 조금만 달라져도 결과가 완전히 바뀐다는 점입니다. 공백 하나, 대소문자 하나 차이도 전혀 다른 해시값을 만들어냅니다.
실무에서 자주 하는 실수
가장 흔한 실수는 인코딩을 고려하지 않는 것입니다. 같은 한글 텍스트라도 UTF-8과 EUC-KR로 인코딩하면 다른 바이트 시퀀스가 되고, 당연히 해시값도 달라집니다. 텍스트를 해시할 때는 항상 인코딩을 통일해야 합니다. 또 다른 실수는 줄바꿈 문자입니다. Windows와 Linux/Mac의 줄바꿈이 다르기 때문에 같은 텍스트 파일도 운영체제에 따라 해시가 달라질 수 있습니다.