🧰도구상자

🆔 UUID · 해시 생성기

UUID(v4)를 생성하고 텍스트의 SHA-1·SHA-256·SHA-512 해시를 만듭니다.

UUID v4

해시 생성

UUID·해시 생성기는 텍스트를 입력하면 SHA-1·SHA-256·SHA-512 해시 값을 즉시 만들어 주고, 버튼 한 번으로 UUID(v4)를 발급해 주는 개발자용 도구입니다. 파일이나 문자열이 변조되지 않았는지 검증하거나, 데이터베이스 기본 키·API 요청 식별자로 쓸 고유한 값이 필요할 때 별도 설치 없이 브라우저에서 바로 사용할 수 있습니다.

해시(hash)는 임의 길이의 입력을 고정 길이의 값으로 바꾸는 단방향 함수입니다. 같은 입력은 항상 같은 해시를 내지만, 반대로 해시 값만 보고 원래 입력을 되돌릴 수는 없습니다. 이 성질 덕분에 해시는 무결성 검증, 비밀번호 저장, 중복 검사, 캐시 키 생성 등 개발 전반에서 폭넓게 쓰입니다.

이 도구의 해시 계산은 모두 브라우저 내장 Web Crypto API로 처리되며, 입력한 텍스트는 서버로 전송되지 않습니다. 아래에서는 해시 함수의 개념, 알고리즘별 출력 길이와 특징 비교, 무결성 검증·비밀번호 저장 같은 실제 활용법, 그리고 MD5·SHA-1처럼 더 이상 보안용으로 권장하지 않는 알고리즘의 취약성까지 정리했습니다.

사용 방법

  1. '해시 생성' 입력란에 해시할 텍스트를 입력합니다. 입력하는 즉시 SHA-1·SHA-256·SHA-512 세 가지 해시가 자동으로 계산됩니다.
  2. 각 알고리즘 옆의 '복사' 버튼을 눌러 필요한 해시 값을 클립보드에 담습니다. 같은 텍스트는 언제 계산해도 항상 동일한 해시가 나오므로, 다른 곳에서 만든 값과 비교해 무결성을 확인할 수 있습니다.
  3. 고유 식별자가 필요하면 상단 UUID 영역의 값을 복사하거나 '새로 생성'을 눌러 새 UUID(v4)를 발급받습니다.
  4. 무결성 검증에 쓸 때는 원본과 대상의 해시를 각각 구해, 두 값이 문자 하나까지 완전히 일치하는지 비교하면 됩니다.

해시 함수란 무엇인가

해시 함수는 어떤 길이의 데이터를 넣어도 정해진 길이의 값(해시·다이제스트)으로 압축해 내보내는 단방향 함수입니다. '단방향'이라는 말은 입력에서 해시를 구하기는 쉽지만, 해시에서 원래 입력을 역산하기는 사실상 불가능하다는 뜻입니다.

좋은 암호학적 해시 함수는 몇 가지 성질을 갖춰야 합니다. 아래 성질이 충족될수록 무결성 검증과 보안 용도로 신뢰할 수 있습니다.

  • 결정성: 같은 입력은 언제나 같은 해시를 낸다. 그래서 값 비교만으로 데이터가 같은지 확인할 수 있다.
  • 쇄도 효과(avalanche): 입력이 한 글자만 달라져도 해시 전체가 완전히 달라진다.
  • 역상 저항성: 해시 값만으로 원래 입력을 알아낼 수 없다.
  • 충돌 저항성: 서로 다른 두 입력이 같은 해시를 갖도록 만드는 것이 계산상 어렵다.

해시 ≠ 암호화

암호화는 키가 있으면 원문을 복원할 수 있는 양방향 변환이지만, 해시는 복원이 불가능한 단방향 변환입니다. 따라서 '비밀번호를 해시해서 저장'할 수는 있어도, 나중에 그 해시를 '복호화'해 원래 비밀번호를 되찾을 수는 없습니다.

알고리즘별 특징 비교

이 도구는 SHA-1·SHA-256·SHA-512를 지원합니다. 알고리즘마다 출력 길이(해시 크기)가 다르며, 출력이 16진수 문자열로 표시되므로 비트 수의 4분의 1이 문자 수가 됩니다. 참고로 널리 알려진 MD5도 아래 표에 함께 실었지만, 이 도구는 보안상 권장되지 않는 MD5는 생성하지 않습니다.

주요 해시 알고리즘 출력 길이 및 상태 (16진수 표기 기준)
알고리즘출력 길이16진수 문자 수이 도구 지원보안 권장
MD5128비트32자미지원권장 안 함(취약)
SHA-1160비트40자지원권장 안 함(취약)
SHA-256256비트64자지원권장(현행 표준)
SHA-512512비트128자지원권장

출력 길이는 입력과 무관합니다

한 글자를 넣든 소설 한 권을 넣든, SHA-256의 결과는 항상 64자(256비트)입니다. 해시가 '고정 길이 요약'이라는 점을 보여 주는 특징으로, 그래서 큰 파일도 짧은 해시 하나로 비교할 수 있습니다.

무결성 검증에 해시 쓰기

해시의 가장 대표적인 용도는 데이터가 중간에 변조·손상되지 않았는지 확인하는 무결성 검증입니다. 파일을 배포하는 쪽에서 원본의 SHA-256 해시(체크섬)를 함께 공개하면, 내려받은 사람은 자기 파일의 해시를 구해 그 값과 비교하는 것만으로 파일이 온전한지 알 수 있습니다.

  • 소프트웨어 배포: 설치 파일과 함께 SHA-256 체크섬을 게시해 다운로드 무결성을 확인하게 한다.
  • Git 커밋: Git은 커밋과 파일 객체를 해시로 식별해 내용이 바뀌면 식별자도 바뀌도록 설계돼 있다.
  • 중복 제거: 파일 내용의 해시를 비교해 동일한 파일을 저장소에서 한 벌만 보관한다.
  • 캐시 키: 요청 파라미터를 해시해 캐시 키로 삼으면 동일 요청을 빠르게 식별할 수 있다.

해시가 다르면 내용이 다릅니다

두 데이터의 해시가 한 글자라도 다르면 두 원본은 확실히 다른 데이터입니다. 쇄도 효과 때문에 단 1비트만 바뀌어도 해시 전체가 뒤바뀌므로, 미세한 변조나 전송 오류도 해시 비교로 잡아낼 수 있습니다.

비밀번호는 어떻게 저장할까

비밀번호는 원문 그대로 저장하지 않고 해시해서 보관하는 것이 원칙입니다. 그래야 데이터베이스가 유출되더라도 공격자가 원래 비밀번호를 곧바로 알 수 없습니다. 다만 단순히 SHA-256을 한 번 적용하는 것만으로는 부족합니다.

실무에서는 사용자마다 다른 무작위 값(솔트, salt)을 붙여 해시하고, 계산을 일부러 느리게 만든 전용 알고리즘을 씁니다. 솔트는 미리 계산해 둔 해시 대조표(레인보우 테이블) 공격을 막고, 느린 알고리즘은 무차별 대입 속도를 떨어뜨립니다.

  • 솔트 사용: 같은 비밀번호라도 사용자마다 해시가 달라져 대량 대조 공격이 무력화된다.
  • 느린 해시: bcrypt·scrypt·Argon2·PBKDF2처럼 의도적으로 느리게 설계된 알고리즘을 쓴다.
  • 일반 SHA 계열은 부적합: SHA-256·SHA-512는 무결성용으로는 훌륭하지만 너무 빨라, 비밀번호 저장에는 위 전용 알고리즘을 쓰는 것이 안전하다.

이 도구는 학습·검증용입니다

여기서 만든 SHA 해시는 무결성 확인·식별자 생성·학습 용도에 적합합니다. 실제 서비스의 비밀번호 저장에는 솔트와 bcrypt·Argon2 같은 전용 알고리즘을 서버에서 적용하세요.

MD5·SHA-1의 취약성

MD5와 SHA-1은 한때 표준으로 널리 쓰였지만, 지금은 서로 다른 입력이 같은 해시를 갖는 '충돌'을 현실적인 비용으로 만들어 낼 수 있음이 입증돼 보안 용도로는 권장되지 않습니다. MD5는 2000년대 초에, SHA-1은 2017년 구글의 SHAttered 연구로 실제 충돌 사례가 공개됐습니다.

  • 충돌 위험: 공격자가 겉으로는 정상이지만 같은 해시를 갖는 위조 파일을 만들 수 있어, 서명·인증서 검증이 뚫릴 수 있다.
  • 여전한 잔존 용도: 단순 체크섬이나 비암호학적 식별처럼 보안이 목적이 아닌 곳에서는 MD5·SHA-1이 아직 쓰이기도 한다.
  • 권장 대안: 새로 설계하는 시스템에서 무결성·서명이 필요하면 SHA-256 이상을 사용한다.

보안이 필요하면 SHA-256 이상을 쓰세요

MD5와 SHA-1은 충돌 저항성이 깨져 디지털 서명·인증서·비밀번호 등 보안 목적에는 부적합합니다. 이 도구가 제공하는 SHA-256·SHA-512는 현재까지 안전한 것으로 평가되므로, 보안이 중요한 검증에는 이 둘을 쓰는 것이 좋습니다.

자주 묻는 질문

SHA-256과 SHA-512는 무엇이 다른가요?
둘 다 SHA-2 계열의 안전한 해시 함수이며, 출력 길이가 다릅니다. SHA-256은 256비트(16진수 64자), SHA-512는 512비트(16진수 128자)를 만듭니다. 일반적인 무결성 검증에는 SHA-256으로 충분하고, 더 큰 출력이 필요하거나 64비트 환경에서 성능이 중요한 경우 SHA-512를 쓰기도 합니다.
왜 MD5는 지원하지 않나요?
MD5는 충돌 공격이 실용화돼 보안 용도로 권장되지 않기 때문입니다. 또한 이 도구가 사용하는 브라우저 표준 Web Crypto API 자체가 MD5를 제공하지 않습니다. 무결성·서명 등 보안이 필요한 곳에는 SHA-256 이상을 사용하세요.
같은 텍스트인데 다른 사이트에서 나온 해시와 다르게 나와요.
대부분 입력이 미묘하게 다른 경우입니다. 끝의 줄바꿈, 공백, 대소문자, 눈에 보이지 않는 특수문자 하나만 달라도 해시는 완전히 달라집니다. 또 입력 문자열의 인코딩(UTF-8 등)이 다르면 결과도 달라집니다. 이 도구는 입력을 UTF-8로 인코딩해 계산합니다.
해시 값으로 원래 텍스트를 되돌릴 수 있나요?
없습니다. 해시는 단방향 함수라 수학적으로 역산이 불가능합니다. 다만 흔한 단어·비밀번호는 미리 계산된 대조표로 추측될 수 있어, 비밀번호 저장에는 솔트와 전용 알고리즘을 함께 써야 합니다.
UUID v4는 어떻게 만들어지나요? 중복될 가능성은 없나요?
UUID v4는 128비트 중 122비트를 무작위로 채워 만드는 식별자입니다. 경우의 수가 천문학적으로 커서 현실적으로 중복은 무시할 수 있는 수준이며, 데이터베이스 기본 키나 요청 추적 ID처럼 고유값이 필요한 곳에 널리 쓰입니다. 이 도구는 브라우저의 crypto.randomUUID로 생성합니다.
입력한 텍스트가 서버로 전송되나요?
아닙니다. 해시 계산과 UUID 생성 모두 브라우저 내장 Web Crypto API로 로컬에서 처리되며, 입력 내용은 외부로 전송되지 않습니다. 그래도 실제 비밀번호나 민감한 원문 자체를 테스트 입력으로 넣는 것은 습관적으로 피하는 편이 좋습니다.

관련 도구