해시 생성기 (MD5 · SHA-256 · SHA-512)
텍스트를 MD5·SHA 해시로, 다섯 알고리즘을 한 번에
입력은 브라우저에서만 계산되고 서버로 전송되지 않습니다
계산 중…
계산 중…
계산 중…
계산 중…
계산 중…
보안 부적합 표시된 MD5·SHA-1은 충돌이 발견돼 위변조 방지·전자서명에 쓰면 안 됩니다(단순 체크섬엔 무방). 보안이 필요하면 SHA-256 이상을, 비밀번호에는 소금을 친 bcrypt·Argon2를 쓰세요.
해시는 데이터의 “지문”입니다
해시 함수는 어떤 길이의 데이터든 고정 길이의 짧은 값으로 바꾸는 일방향 함수입니다. 한 글자짜리 문장도, 몇 기가바이트 영화 파일도 SHA-256을 거치면 똑같이 64자리 16진수 하나가 됩니다. 이 값은 원본마다 사실상 고유해서, 데이터의 지문처럼 “이게 그거 맞아?”를 확인하는 데 씁니다.
가장 중요한 성질은 되돌릴 수 없다는 것입니다. 해시값만 보고 원문을 복원하는 것은 원리적으로 불가능합니다(그래서 이 도구도 해시 → 원문은 제공하지 않습니다). 이 점 때문에 해시는 암호화와 자주 혼동되지만 전혀 다릅니다 — 암호화는 열쇠로 되돌리는 것이 목적이고, 해시는 되돌릴 수 없는 것이 목적입니다.
어디에 쓰나
- 무결성 검사 — 내려받은 파일의 해시가 배포처가 알려 준 값과 같으면, 전송 중 깨지거나 변조되지 않았다는 뜻입니다.
- 중복 판별 — 두 파일의 해시가 같으면 내용이 같습니다. 이름이 달라도 알아챕니다.
- 비밀번호 검증 — 원문을 저장하지 않고, 입력한 비밀번호의 해시가 저장된 해시와 같은지만 봅니다(단, 아래의 소금·전용 알고리즘이 필요합니다).
눈사태 효과: 한 글자가 전부를 바꾼다
좋은 해시는 입력의 단 한 비트만 달라져도 출력의 절반가량이 뒤집힙니다. 이것을 눈사태 효과라고 합니다.
hello → SHA-256: 2cf24dba5fb0a30e26e83b2ac5b9e29e...
Hello → SHA-256: 185f8db32271fe25f561a6fc938b2e26...
└ 대문자 하나 차이인데 결과는 완전히 다르다그래서 파일이 조금이라도 변조되면 해시가 확연히 달라져 바로 드러납니다. 반대로, 보이지 않는 차이(끝의 공백, Windows의 CRLF vs Unix의 LF 줄바꿈, 전각 공백)도 해시를 완전히 바꿉니다 — 해시는 사람 눈이 아니라 바이트를 보기 때문입니다. 글자마다의 바이트를 확인하려면 아스키코드 변환기가, 줄바꿈·전각 공백을 정리하려면 전각·반각 변환기가 도움이 됩니다.
MD5·SHA-1은 왜 ‘깨졌다’고 하나
좋은 해시는 서로 다른 두 입력이 같은 해시값을 갖는 충돌이 사실상 없어야 합니다. 그런데 MD5는 2004년, SHA-1은 2017년에 서로 다른 내용이 같은 해시를 갖도록 의도적으로 만드는 방법이 공개됐습니다. 이러면 공격자가 가짜 파일을 진짜와 같은 해시로 위장할 수 있어, 전자서명·위변조 방지 같은 보안 용도에서는 위험합니다.
다만 이 도구가 MD5·SHA-1을 함께 내는 이유는, 악의적 공격이 없는 용도(전송 중 깨졌는지 보는 단순 체크섬, 캐시 키, 오래된 시스템과의 호환)에서는 여전히 빠르고 쓸 만하기 때문입니다. 보안이 필요하면 SHA-256 이상을 쓰세요 — 그래서 이 도구는 MD5·SHA-1에 “보안 부적합” 표시를 붙여 둡니다. 다룰 수 있다고 안전하다고 말하지 않습니다.
비밀번호에는 소금을 친다
“비밀번호를 SHA-256으로 해시해서 저장하면 안전하지 않나?”는 흔한 오해입니다. 사람들은 흔한 비밀번호를 쓰기 때문에, 공격자는 미리 계산해 둔 해시 사전(레인보우 테이블)으로 흔한 비밀번호의 해시를 즉시 역추적합니다. 그래서 실제 비밀번호 저장에는 두 가지가 필요합니다.
- 소금(salt) — 사용자마다 다른 무작위 값을 붙여 해시해서, 같은 비밀번호도 다른 해시가 되게 합니다(사전 공격 무력화).
- 느린 전용 알고리즘 — bcrypt·scrypt·Argon2처럼 일부러 느리게 설계된 함수를 씁니다. 일반 SHA-256은 너무 빨라서 초당 수십억 번 대입에 오히려 취약합니다.
그래서 이 도구의 해시는 무결성 확인·학습용입니다. 무작위 값 자체가 필요하다면 형제 사이트 TextKit의 비밀번호·UUID 생성기가 암호학적 난수로 만들어 줍니다.
자주 묻는 질문
- 해시와 암호화는 뭐가 다른가요?
- 암호화는 되돌릴 수 있고(복호화), 해시는 되돌릴 수 없습니다. 해시는 어떤 길이의 데이터든 고정 길이의 값으로 '뭉개는' 일방향 함수라, 해시값만 보고 원문을 복원하는 것이 불가능합니다. 그래서 해시는 비밀을 숨기는 용도가 아니라 '같은지 확인'하는 용도입니다 — 파일이 변조되지 않았는지(무결성), 두 값이 동일한지, 비밀번호가 맞는지를 원문을 저장하지 않고 검증합니다. 이 도구도 해시 → 원문 복원은 제공하지 않습니다. 원리적으로 불가능하기 때문입니다.
- 왜 MD5와 SHA-1은 '보안에 쓰지 말라'고 하나요?
- 충돌(collision)이 발견됐기 때문입니다. 좋은 해시는 서로 다른 두 입력이 같은 해시값을 갖는 일이 사실상 없어야 하는데, MD5는 2004년, SHA-1은 2017년에 서로 다른 내용이 같은 해시를 갖도록 '의도적으로 만드는' 방법이 공개됐습니다. 그래서 위변조 방지·전자서명 같은 보안 용도에서는 공격자가 가짜 파일을 진짜와 같은 해시로 위장할 수 있어 위험합니다. 다만 단순 체크섬(전송 중 깨졌는지)이나 캐시 키처럼 악의적 공격이 없는 용도에는 여전히 빠르고 쓸 만합니다. 보안이 필요하면 SHA-256 이상을 쓰세요.
- 비밀번호를 그냥 SHA-256으로 해시해서 저장하면 되나요?
- 안 됩니다. 사용자들은 흔한 비밀번호를 쓰기 때문에, 공격자는 미리 계산해 둔 '해시 사전(레인보우 테이블)'으로 흔한 비밀번호의 해시를 즉시 역추적합니다. 그래서 비밀번호에는 사용자마다 다른 무작위 값(salt, 소금)을 붙여 해시하고, 일부러 느린 전용 알고리즘(bcrypt·scrypt·Argon2)을 씁니다. 일반 SHA-256은 너무 빨라서 대량 대입에 오히려 취약합니다. 이 도구의 해시는 무결성 확인·학습용이며, 실제 비밀번호 저장에는 전용 라이브러리를 쓰세요.
- 입력을 아주 조금만 바꿔도 해시가 완전히 달라지나요?
- 네. 이것을 눈사태 효과(avalanche effect)라고 합니다. 좋은 해시는 입력의 단 한 비트만 바뀌어도 출력의 절반가량이 뒤집혀, 원래 값과 아무 관련 없어 보이는 결과가 나옵니다. 위 도구에서 'hello'와 'Hello'를 넣어 비교해 보면 대문자 하나 차이인데도 해시가 완전히 다른 것을 볼 수 있습니다. 이 성질 덕분에 파일이 조금이라도 변조되면 해시가 확연히 달라져 바로 알아챌 수 있습니다.
- 같은 글자인데 다른 해시가 나올 때가 있어요.
- 보이지 않는 차이 때문입니다. 끝에 붙은 공백, 줄바꿈(Windows의 CRLF vs Unix의 LF), 눈에 안 보이는 전각 공백, 인코딩 차이가 있으면 해시는 완전히 달라집니다. 해시는 바이트를 그대로 보기 때문에 '사람 눈에 같아 보이는 것'이 아니라 '바이트가 같은 것'만 같은 해시를 냅니다. 파일 해시가 안 맞으면 눈에 안 보이는 문자가 섞였을 수 있으니, 공백·줄바꿈을 먼저 확인하세요.
- 입력한 내용이 서버로 전송되나요?
- 아니요. 모든 해시는 브라우저 안에서 계산됩니다. SHA 계열은 브라우저 표준 암호화 기능(Web Crypto)으로, MD5는 이 페이지의 코드로 직접 계산하며, 입력을 어디로도 보내지 않습니다. 민감한 값을 넣어도 네트워크로 나가지 않습니다.