T

Text Machine

강력한 텍스트 도구를 브라우저에서

해시 생성기

텍스트에서 MD5, SHA-1, SHA-256, SHA-384, SHA-512 다이제스트를 생성합니다. 모든 처리가 브라우저에서 로컬로 실행되므로 입력 내용이 업로드되지 않습니다.

입력 텍스트

0자

해시

위에 텍스트를 입력하면 해시가 표시됩니다.

해시 생성기 사용 방법

  1. 1

    텍스트 입력

    아무 텍스트나 입력 패널에 입력하거나 붙여넣으세요. 해시는 텍스트의 UTF-8 바이트로부터 자동 계산됩니다.

  2. 2

    모든 다이제스트 확인

    MD5, SHA-1, SHA-256, SHA-384, SHA-512 결과를 함께 확인하세요. 입력하는 즉시 각 값이 실시간으로 갱신됩니다.

  3. 3

    적합한 알고리즘 선택

    보안과 관련된 작업에는 SHA-256 이상을 선택하고, MD5나 SHA-1은 보안과 무관한 체크섬과 레거시 호환성에만 사용하세요.

  4. 4

    해시 복사

    각 행의 Copy를 클릭해 해당 16진수 다이제스트를 클립보드에 담으세요. 이 모든 과정이 브라우저를 벗어나지 않습니다.

해시 함수 풀이: 다이제스트, 무결성, 그리고 하지 말아야 할 것

해시 함수가 하는 일

암호학적 해시 함수는 임의의 길이의 입력을 받아 다이제스트라고 부르는 고정 길이의 바이트 문자열을 만들어 내며, 보통 16진수로 표시됩니다. SHA-256은 글자 하나를 넣든 1기가바이트 파일을 넣든 항상 256비트, 즉 64개의 16진수 문자를 내놓습니다. 이 함수는 설계상 단방향입니다. 입력으로부터 다이제스트를 계산하는 것은 빠르지만, 다이제스트로부터 입력을 복원하는 것은 계산적으로 불가능하죠. 바로 그 비대칭성이 핵심입니다.

이 생성기는 같은 텍스트로부터 MD5, SHA-1, SHA-256, SHA-384, SHA-512 다섯 가지 다이제스트를 한 번에 계산하며, 가능한 경우 Web Crypto API를 사용합니다. 이들을 나란히 보면 절충 관계가 손에 잡힙니다. 오래된 함수는 더 짧고 빠르며, SHA-2 계열은 더 길고 보안 작업을 위해 만들어졌습니다.

결정성과 쇄도 효과

해시는 완벽하게 결정적입니다. 같은 입력은 언제나, 모든 기기에서, 올바르게 구현된 모든 환경에서 같은 다이제스트를 내놓습니다. 바로 이 점이 비교와 검증에 유용하게 만들죠. hello라는 단어를 입력하면 특정한 SHA-256 문자열 하나가 나오고, 내일 다시 입력해도 동일한 문자열이 나옵니다.

그러면서도 그 대응은 입력에 극도로 민감합니다. 문자 하나만 바꾸어도, 심지어 한 글자의 대소문자를 뒤집거나 후행 공백 하나를 더하기만 해도, 좋은 해시 함수는 출력 비트의 절반쯤이 뒤집힌 완전히 다른, 알아볼 수 없는 다이제스트를 만들어 냅니다. 이것이 쇄도 효과이며, 다이제스트가 두 입력이 얼마나 비슷했는지 추측하는 데 쓸모없는 이유입니다. 거의 똑같은 입력도 완전히 무관해 보이는데, 이는 버그가 아니라 기능입니다.

일상적 용도: 무결성과 체크섬

해시의 가장 흔한 정당한 용도는 데이터가 온전히 도착했는지 검증하는 것입니다. 다운로드 페이지가 파일의 SHA-256을 게시하면, 내려받은 뒤 내 사본을 해시해 비교합니다. 두 다이제스트가 한 글자도 빠짐없이 일치하면 그 파일은 원본과 바이트 단위로 동일하며 전송 중 잘리거나 손상되지 않았다는 뜻입니다. 단 한 비트라도 다르면 다이제스트는 일치하지 않습니다.

같은 성질이 중복 제거와 변경 감지를 가능하게 합니다. 스토리지 시스템은 블록을 바이트 단위로 비교하지 않고 해시해 중복을 찾아내고, 버전 관리 시스템과 캐시는 콘텐츠 해시를 식별자로 쓰며, 빌드 도구는 입력을 해시해 작업을 건너뛸 수 있는지 판단합니다. 이 모든 경우에서 해시는 콘텐츠의 작고 믿을 수 있는 지문 역할을 합니다.

해싱은 암호화가 아니다

이 혼동은 어디에나 있고 중요합니다. 암호화는 되돌릴 수 있습니다. 올바른 키가 있으면 원래 평문을 복원할 수 있는데, 그 목적 자체가 나중에 다시 읽으려는 데이터를 보호하는 것이기 때문입니다. 해싱은 일부러 단방향입니다. 키도 없고 복호화 단계도 없는데, 목표가 복원 가능한 사본이 아니라 지문이기 때문이죠.

그러니 해시는 결코 "이 텍스트를 비밀로 했다가 나중에 읽고 싶다"는 문제의 답이 될 수 없습니다. 무언가를 저장했다가 되찾아야 한다면 필요한 것은 암호화입니다. 원본을 저장하지 않은 채 나중의 입력이 이전 입력과 일치하는지만 확인하면 된다면 필요한 것은 해시입니다. 엉뚱한 쪽에 손을 뻗는 것은 어떤 알고리즘 강도로도 고칠 수 없는 설계상의 오류입니다.

MD5와 SHA-1은 보안 측면에서 깨졌다

MD5와 SHA-1을 여기서 여전히 계산하는 이유는 이들이 보안과 무관한 체크섬, 레거시 상호 운용, 오래된 시스템이 만들어 낸 값과의 일치 확인에 쓸모가 있기 때문입니다. 하지만 둘 다 암호학적으로 깨졌습니다. 연구자들이 같은 다이제스트로 해시되는 서로 다른 두 입력, 즉 실용적인 충돌을 만들어 냈으며, SHA-1의 경우 실제로 의미 있는 파일로 이것이 입증되었습니다. 충돌은 다이제스트가 입력을 유일하게 식별한다는 보안 보장을 무너뜨립니다.

실무 규칙은 간단합니다. 공격자가 일치를 위조해 이득을 볼 수 있는 곳, 즉 디지털 서명, 인증서 지문, 변조 감지 로그, 충돌 방지 식별자에는 절대 MD5나 SHA-1을 쓰지 마세요. 보안에 민감한 것에는 SHA-256 이상을 선택하세요. 레거시 함수는 적이 존재하지 않는 단순 무결성 확인용으로만 남겨 두세요.

평범한 해싱이 비밀번호에 부적절한 이유

비밀번호의 SHA-256을 저장해 두고 로그인할 때 비교하는 방식으로 비밀번호를 보관하고 싶은 유혹이 들지만, 이는 심각한 실수입니다. 범용 해시는 빠르도록 만들어졌고, 그 속도 덕분에 공격자는 탈취한 데이터베이스를 상대로 초당 수십억 개의 후보 비밀번호를 시도할 수 있습니다. 더 나쁜 점은, 같은 비밀번호를 쓰는 두 사용자가 같은 다이제스트를 만들어 내고, 미리 계산된 조회 테이블(레인보우 테이블)이 흔한 비밀번호를 즉시 역산할 수 있다는 것입니다.

올바른 비밀번호 저장은 느리고 솔트가 적용된, 목적에 맞게 만들어진 키 유도 함수, 즉 bcrypt, scrypt, Argon2를 사용합니다. 사용자마다 고유한 무작위 솔트가 조회 테이블을 무력화하고, 의도적으로 둔 비용 계수가 무차별 대입을 비싸게 만듭니다. 솔트란 동일한 비밀번호가 서로 다른 저장 값을 만들어 내도록 해싱 전에 비밀번호와 결합하는 무작위 데이터일 뿐입니다. 이 도구는 해시를 이해하고 검증하는 데 쓰되, 자격 증명을 저장하는 데 맨 SHA 다이제스트를 쓰지는 마세요.

인코딩, 출력 형식, 그리고 프라이버시

해시는 바이트를 대상으로 동작하므로 텍스트 인코딩이 고정되어 있지 않으면 도구마다 다이제스트가 무의미해집니다. 이 생성기는 해싱 전에 입력을 UTF-8로 인코딩하므로, 악센트 문자, 비라틴 문자, 이모지가 모두 다른 UTF-8 기반 구현과 일치하는 표준 다이제스트를 만듭니다. 다른 곳에서 계산한 다이제스트가 어긋난다면 인코딩 불일치, 또는 엉뚱하게 붙은 후행 줄바꿈이 보통 그 원인입니다.

모든 처리는 브라우저 안에서 로컬로 이루어집니다. 입력이 결코 업로드되거나 기록되거나 저장되지 않으므로 토큰, 파일 내용, 그 밖의 민감한 값을 안전하게 해시할 수 있습니다. 유용한 검증 습관은 알려진 입력을 붙여넣고 그 다이제스트가 애플리케이션이나 다운로드 페이지가 보고하는 값과 일치하는지 확인하는 것입니다. 양쪽이 바이트 단위로 일치하면, 두 쪽 모두 같은 것을 인코딩하고 해싱하고 있는 것입니다.

자주 묻는 질문

이 도구는 어떤 해시 알고리즘을 생성하나요?
같은 입력으로부터 MD5, SHA-1, SHA-256, SHA-384, SHA-512 다섯 가지 다이제스트를 한 번에 생성하며, 각각 16진수 문자열로 표시되고 입력하는 즉시 실시간으로 갱신됩니다.
내 입력이 서버로 전송되나요?
아니요. 모든 해시는 JavaScript와 Web Crypto API를 사용해 브라우저 안에서 로컬로 계산되므로 텍스트가 기기를 벗어나지 않습니다. 덕분에 비밀번호, 토큰 등 민감한 데이터에도 안전합니다.
MD5와 SHA-256 중 무엇을 써야 하나요?
MD5와 SHA-1은 실제 충돌이 존재해 암호학적으로 취약하므로, 비밀번호, 서명, 변조 방지에는 사용하지 마세요. 보안에 민감한 작업에는 SHA-256, SHA-384, SHA-512를 사용하고, MD5와 SHA-1은 단순 체크섬과 레거시 시스템에만 적합합니다.
해시를 원래 텍스트로 되돌릴 수 있나요?
아니요. 암호학적 해시는 단방향 함수라 수학적으로 역산할 수 없습니다. 다만 짧거나 흔한 입력은 무차별 대입이나 조회 테이블로 추측될 수 있으며, 그래서 취약한 알고리즘이 비밀번호 저장에 안전하지 않은 것입니다.
Unicode와 이모지를 올바르게 처리하나요?
네. 텍스트는 해싱 전에 UTF-8로 인코딩되므로, 악센트 문자, 비라틴 문자, 이모지가 모두 다른 UTF-8 기반 도구와 일치하는 표준적이고 상호 운용 가능한 다이제스트를 만듭니다.

관련 도구

이런 편리한 도구도 함께 사용해 보세요

HTML을 텍스트로 변환

JSON 포매터

정규식 테스터

JWT 디코더

CSS 그라데이션 생성기

CSS 박스 그림자 생성기