해시 함수와 다이제스트 이해하기
이 생성기가 하는 일
해시 함수는 입력한 어떤 텍스트든 고정 길이의 16진수 문자열, 즉 다이제스트(digest)로 압축합니다. 이 도구는 MD5, SHA-1, SHA-256, SHA-512라는 대표적인 네 가지 알고리즘을 동시에 실행하며, 텍스트를 수정하는 순간 각 다이제스트가 곧바로 갱신됩니다. 결과의 길이는 알고리즘마다 다른데, MD5는 16진수 32자, SHA-1은 40자, SHA-256은 64자, SHA-512는 128자를 만듭니다.
해시는 설계상 단방향입니다. 같은 입력에서는 항상 같은 다이제스트가 나오지만, 다이제스트를 원래 텍스트로 되돌리는 연산은 존재하지 않습니다. 한 글자만 바뀌어도 출력 전체가 다시 쓰이며, 바로 이 성질 덕분에 해시가 차이를 찾아내는 데 유용합니다.
언제 사용하나요
가장 흔한 용도는 파일이나 메시지가 손상 없이 도착했는지 확인하는 것입니다. 배포 페이지는 릴리스의 SHA-256을 함께 게시하는 경우가 많은데, 받은 파일의 해시를 계산해 두 다이제스트를 비교하면 전송 중에 손상되거나 바꿔치기되지 않았는지 확인할 수 있습니다. 비교 칸에 기준 다이제스트를 붙여 넣으면 일치 여부를 한눈에 볼 수 있습니다.
개발할 때는 중복 제거를 위한 간단한 지문 생성, 시스템이 해시 값을 저장하는 방식 테스트, 같은 입력에 대한 각 알고리즘의 동작 비교 같은 용도로도 씁니다.
예시: 짧은 문자열 해싱하기
hello라는 단어를 입력하면 SHA-256은 언제나 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824, 즉 64자의 16진수를 돌려줍니다. 같은 단어의 MD5는 훨씬 짧은 5d41402abc4b2a76b9719d911017c592입니다. 공백 하나를 더하거나 H를 대문자로 바꾸기만 해도 두 다이제스트는 이전과 전혀 닮지 않게 완전히 달라집니다. 이런 눈사태 효과(avalanche effect)가 해시를 믿을 만한 무결성 검사 수단으로 만들어 줍니다.
참고 사항과 엣지 케이스
모든 알고리즘이 모든 용도에 맞는 것은 아닙니다. MD5와 SHA-1은 빠르지만 암호학적으로 깨졌고 실제 충돌 공격이 존재하므로, 체크섬과 중복 탐지에만 쓰고 보안 용도로는 절대 사용하지 마세요. SHA-256은 오늘날 디지털 서명과 블록체인에서 기본으로 쓰이는 선택지이며, SHA-512는 높은 보안이나 장기 보존에 더 넉넉한 여유를 줍니다.
비밀번호 저장에도 해시 하나만으로는 적합하지 않습니다. 비밀번호를 그냥 SHA-256으로 한 번 돌린 값은 미리 계산된 테이블로 뚫릴 수 있어, 실제 시스템은 bcrypt, scrypt, Argon2처럼 일부러 느리게 만든 알고리즘을 고유한 솔트와 함께 사용합니다. 이 생성기는 다이제스트를 만들고 대조하는 도구이지 비밀번호 저장소가 아니라는 점을 기억하세요.