해시 생성기

텍스트의 MD5, SHA-1, SHA-256, SHA-384, SHA-512 해시를 생성합니다.

100% 비공개 — 전적으로 브라우저에서 실행됩니다. 데이터는 사용자의 기기에서 처리되며 인터넷으로 전송되지 않습니다.
MD5
SHA-1
SHA-256
SHA-384
SHA-512

해시 생성기 소개

이 무료 해시 생성기는 어떤 텍스트든 MD5, SHA-1, SHA-256, SHA-384, SHA-512 해시를 한 번에, 입력하는 즉시 실시간으로 계산합니다.

해시는 Web Crypto API를 사용해 브라우저 안에서 계산되며, 입력하신 텍스트는 절대 업로드되지 않습니다.

해시란 무엇인가

해시 함수는 길이에 상관없이 입력을 받아 고정 길이의 지문을 만들어 냅니다. 한 글자를 넣든 책 한 권을 넣든, SHA-256은 어느 쪽이든 64자리 16진수를 돌려줍니다.

세 가지 성질이 해시를 유용하게 만듭니다.

결정적입니다. 같은 입력은 언제나 같은 해시를 냅니다. 언제나, 어떤 기기에서나, 영원히 그렇습니다.

눈사태 효과. 입력에서 한 비트만 바꿔도 출력 비트의 약 절반이 뒤집힙니다. hello와 hellp의 해시에는 눈에 보이는 연관성이 전혀 없습니다. '비슷하다'는 것은 없습니다. 해시는 정확히 일치하거나, 아무것도 알려주지 않거나 둘 중 하나입니다.

단방향입니다. 해시에서 입력으로 거슬러 올라갈 수 없습니다. 함수는 의도적으로 정보를 버리며, 역함수는 존재하지 않습니다.

바로 이 마지막 성질이 핵심이며, 해시가 암호화가 아닌 이유입니다.

해싱은 암호화가 아닙니다

암호화는 양방향입니다. 키가 있으면 원본을 되찾을 수 있습니다. 그것이 암호화의 목적 전부입니다.

해싱은 설계상 단방향입니다. 키도 없고 돌아갈 길도 없습니다. 500쪽짜리 문서와 글자 하나가 똑같이 64자가 됩니다 — 정보의 대부분은 그냥 사라진 것입니다.

그래서 해시가 답하는 질문은 결코 "이것은 무엇이었는가?"가 아니라 "이것이 저것과 같은가?"입니다. 두 해시를 비교해서 같으면 입력이 같았다는 뜻이고, 다르면 같지 않았다는 뜻입니다.

여기서 흔한 오해가 생깁니다. MD5 해시를 "복호화"한다는 것은 존재하지 않습니다. 조회 사이트가 실제로 하는 일은 흔한 입력 수십억 개를 미리 해싱해 두고, 여러분의 값이 그 표에 있는지 확인하는 것입니다. 함수를 되돌리는 것이 아니라 전에 본 값을 알아보는 것뿐입니다. 특이한 값은 표에 없습니다.

MD5와 SHA-1은 깨졌습니다 — 그 의미

둘 다 여전히 여기저기 쓰이지만, 둘 다 보안 용도로는 안전하지 않습니다. 정확히 어떤 의미인지 알아 둘 가치가 있습니다.

충돌이란 서로 다른 두 입력이 같은 해시를 내는 것입니다. 원래는 실현 불가능해야 합니다. MD5에서는 이제 아주 쉬운 일이 되어, 평범한 컴퓨터로 몇 초 만에 충돌을 만들어 낼 수 있습니다. SHA-1은 2017년에 무너졌습니다. 구글이 같은 SHA-1 해시를 갖는 서로 다른 두 PDF를 시연했고, 이후 공격 비용은 계속 낮아지기만 했습니다.

이것이 중요한 이유는 이렇습니다. 누군가 해시가 같은 파일 두 개를 만들 수 있다면, 해시는 더 이상 그 파일이 여러분이 기대한 파일이라는 것을 증명하지 못합니다. 서명된 문서가 같은 지문을 가진 다른 문서로 바꿔치기될 수 있습니다.

MD5가 아직 괜찮은 곳: 우발적인 손상 감지입니다. 내려받은 파일이 온전히 도착했는지, 디스크의 두 파일이 중복인지 알고 싶은 정도라면 MD5로 충분하고 빠릅니다. 무작위 손상이 충돌을 만들어 내는 일은 없습니다.

괜찮지 않은 곳: 누군가 여러분을 속이려 할 수 있는 모든 경우 — 내려받은 파일의 진위 확인, 서명, 비밀번호 저장입니다.

중요한 일에는 SHA-256을 쓰십시오. 알려진 실용적 충돌 공격이 없고, 빠르며, 현대 시스템의 기본값입니다. SHA-512는 대부분의 용도에서 의미 있게 더 안전하지는 않지만 64비트 하드웨어에서는 더 빠를 수 있습니다.

비밀번호를 단순 해시로 저장하지 마십시오

이것이 해시 함수의 가장 큰 오용이며, 실제 유출 사고를 일으킵니다.

비밀번호를 SHA-256으로 해싱해 그 결과를 저장하는 것만으로는 충분하지 않습니다. 문제는 빠른 해시입니다. SHA-256은 빠르도록 설계되었고, 현대 하드웨어는 초당 수십억 번을 계산합니다. 데이터베이스를 훔친 공격자는 해시가 맞아떨어질 때까지 있을 법한 비밀번호를 차례로 시도하기만 하면 됩니다.

두 가지 문제가 상황을 더 나쁘게 만듭니다. 같은 비밀번호는 같은 해시를 냅니다. 그래서 공격자는 어떤 계정들이 같은 비밀번호를 쓰는지 즉시 알아봅니다. 또 미리 계산된 표 때문에 흔한 비밀번호는 아무런 수고 없이도 밝혀집니다.

올바른 방법은 느리고 메모리를 많이 쓰도록 만들어진 비밀번호 해싱 함수를 쓰는 것입니다. bcrypt, scrypt, Argon2가 그것입니다. 이들은 비밀번호마다 고유한 무작위 솔트를 더해 같은 비밀번호라도 다른 해시가 되게 하며, 의도적으로 비용이 큽니다 — 한 번의 검사에 체감될 만큼의 시간이 걸리도록 조정되어 있어, 수십억 번의 시도를 현실적으로 불가능하게 만듭니다.

제대로 된 라이브러리를 사용하십시오. 비밀번호 저장은 해시 기본 요소로 직접 조립할 성질의 것이 아닙니다.

해시가 실제로 쓸모 있는 곳

  • 내려받기 검증 — 공개된 체크섬과 받은 파일을 비교
  • 중복 파일 찾기 — 해시가 같으면 내용이 같습니다
  • 변경 감지 — 이 파일, 레코드, 설정이 수정되었는가?
  • 콘텐츠 주소 지정 — Git은 모든 커밋과 객체를 해시로 이름 짓습니다
  • 데이터 무결성 — 전송이나 백업이 손상 없이 도착했는지 확인
  • 캐시 키 — 더 긴 내용에서 얻어낸 짧고 안정적인 식별자
  • 전자 서명 — 문서를 해싱한 뒤 그 해시에 서명합니다

사용 방법

  • 텍스트를 입력하거나 붙여 넣습니다
  • 알고리즘별로 해시가 실시간으로 갱신됩니다
  • 복사 버튼으로 어떤 해시든 복사할 수 있습니다

알아두면 좋은 점

  • 출력 길이는 고정입니다. MD5는 16진수 32자, SHA-1은 40자, SHA-256은 64자, SHA-512는 128자입니다 — 입력 크기와 무관합니다.
  • 모든 것이 영향을 줍니다. 끝의 공백 하나, 파일 끝의 줄바꿈, 다른 줄바꿈 문자만으로도 해시는 완전히 달라집니다. 체크섬이 "맞아야 하는데" 맞지 않는 흔한 이유가 이것입니다.
  • 인코딩이 중요합니다. 이 도구는 텍스트를 UTF-8로 해싱합니다. 같은 문자라도 다른 인코딩으로 해싱하면 결과가 달라집니다.
  • 대소문자는 관례일 뿐 의미가 아닙니다. 해시는 대문자로도 소문자로도 표시되지만 값은 같습니다. 대소문자를 구분하지 말고 비교하십시오.
  • 빈 입력에도 해시가 있습니다 — 알고리즘마다 잘 알려진 상수가 있습니다.
  • 큰 파일의 해싱은 운영체제의 자체 도구로 하는 편이 낫습니다. Windows에서는 certutil -hashfile, macOS와 Linux에서는 shasum -a 256입니다.

자주 묻는 질문

해싱과 암호화의 차이는 무엇인가요?

암호화는 되돌릴 수 있습니다. 올바른 키가 있으면 원래 데이터를 복원할 수 있고, 그것이 존재 이유입니다. 해싱은 설계상 단방향입니다. 고정 길이의 지문을 만들 뿐 되돌아갈 길이 없는데, 정보 대부분을 의도적으로 버리기 때문입니다. 해싱은 "이 둘이 같은가?"에 답할 뿐, "이것이 무엇이었는가?"에는 결코 답하지 않습니다.

해시를 복호화하거나 되돌릴 수 있나요?

없습니다. 조회 사이트가 제공하는 것은 복원이 아니라 인식입니다. 흔한 문자열 수십억 개를 미리 해싱해 두고, 여러분의 값이 표에 나타나는지 확인하는 것입니다. 흔한 비밀번호와 사전 단어는 즉시 찾아내지만, 특이한 값은 표에 없고 앞으로도 없습니다. 함수 자체는 역으로 계산할 수 없습니다.

MD5는 아직 안전하게 쓸 수 있나요?

우발적인 손상 감지에만 그렇습니다. 내려받기가 온전한지 확인하거나 중복 파일을 찾는 용도입니다. 의도적인 공격에 대해서는 완전히 깨졌습니다 — 같은 MD5를 갖는 서로 다른 파일 두 개를 몇 초 만에 만들 수 있습니다. SHA-1도 깨졌으며, 2017년 충돌하는 PDF로 입증되었습니다. 신뢰가 걸린 일에는 SHA-256을 쓰십시오.

어떤 해시 알고리즘을 써야 하나요?

거의 모든 경우 SHA-256입니다. 빠르고, 널리 지원되며, 알려진 실용적 충돌 공격이 없습니다. SHA-512도 합리적인 대안이며 64비트 시스템에서는 더 빠를 수 있지만, 실제로 의미 있게 더 안전하지는 않습니다. MD5와 SHA-1은 기존 시스템과의 호환성, 그리고 보안과 무관한 검사용으로만 남겨 두십시오.

제 웹사이트의 비밀번호를 해싱하는 데 써도 되나요?

그러지 마십시오. SHA-256 같은 빠른 해시는 잘못된 도구입니다. 하드웨어가 초당 수십억 번을 계산할 수 있어 탈취된 데이터베이스는 금세 무차별 대입으로 뚫립니다. 비밀번호마다 고유한 솔트를 더하고 의도적으로 느린 bcrypt, scrypt, Argon2를 쓰십시오. 비밀번호 저장을 직접 조립하지 말고 언제나 검증된 라이브러리를 사용하십시오.

제 해시가 웹사이트에 게시된 값과 다른 이유는 무엇인가요?

거의 언제나 입력에 눈에 보이지 않는 차이가 있기 때문입니다. 끝의 공백, 끝에 빠졌거나 더 붙은 줄바꿈, Unix 대신 Windows 줄바꿈 문자 등이 있으면 해시는 완전히 달라집니다 — 눈사태 효과가 제대로 작동한 결과입니다. 또한 한 페이지에 여러 값이 나열될 수 있으니 같은 알고리즘끼리 비교하는지도 확인하십시오.

제 텍스트가 서버로 전송되나요?

아닙니다. SHA 해시는 브라우저에 내장된 Web Crypto 구현이 계산하고 MD5는 자바스크립트로 계산하며, 둘 다 전적으로 사용자 기기에서 이루어집니다. 아무것도 전송되거나 저장되지 않으며, 인터넷 연결을 꺼도 이 도구는 작동합니다.

관련 도구

비디오 튜토리얼

새로운 도구를 꾸준히 추가하고 있습니다 — 공개될 때 알림을 받으려면 YouTube에서 구독하세요.

다른 도구

전체 보기

추천 앱

전체 보기