viewer.csslab.dev

해시 생성기

MD5·SHA-1·SHA-256·SHA-384·SHA-512 를 입력하는 동안 한꺼번에 계산한다.

해시란?

암호학적 해시 함수는 길이에 상관없는 입력을 고정된 길이의 값으로 바꾼다. 되돌리는 것이 사실상 불가능하고, 입력의 비트 하나만 바뀌어도 결과가 통째로 달라진다. 데이터가 온전히 도착했는지 확인하거나, 두 값을 저장하지 않고 비교하거나, 전용 함수와 솔트를 써서 비밀번호를 보관하는 데 쓴다.

이 도구는 같은 입력을 MD5·SHA-1·SHA-256·SHA-384·SHA-512 로 동시에 계산한다. 상대 시스템이 무엇을 기대하든 맞춰 볼 수 있다. 해시는 만들어진 방식부터 단방향이다 — 결과 안에 입력이 남아 있지 않으므로 원래 글자를 되찾을 수 없다. 이 페이지에서도, 다른 어디에서도.

Collisions in the MD5 hash function can be found within seconds on a commodity PC.
RFC 6151 §2.1

기능

다섯 알고리즘을 한꺼번에
같은 입력을 MD5·SHA-1·SHA-256·SHA-384·SHA-512 로 동시에 해시한다. 레거시 시스템이 어느 것을 썼는지 짐작해 가며 하나씩 시도할 필요가 없다.
뚫린 알고리즘을 표시한다
MD5 와 SHA-1 은 실용적인 충돌 공격이 존재한다. 결과 옆에 그렇게 적어 둔다 — 체크섬에는 써도 되지만 서명이나 비밀번호에는 안 된다.
UTF-8 을 전제로
입력을 UTF-8 바이트로 해시한다. 한글이나 이모지가 든 문자열도 서버가 같은 문자열로 계산한 값과 일치한다.
페이지 밖으로 나가지 않는다
SHA 계열은 브라우저의 Web Crypto 가, MD5 는 이 페이지의 자바스크립트가 계산한다. 해시할 텍스트는 전송되지 않는다.

사용법

  1. 1

    텍스트를 넣는다

    해시할 값을 입력하거나 붙여넣는다. 다섯 결과가 입력하는 동안 함께 갱신된다.

  2. 2

    필요한 알고리즘을 고른다

    상대 시스템이 기대하는 것에 맞춘다. 새로 만드는 것이라면 SHA-256 이 무난한 기본값이다.

  3. 3

    결과를 복사한다

    줄마다 복사 버튼이 따로 있다.

자주 묻는 질문

해시에서 원래 글자를 되찾을 수 있나?

없다. 해시 함수는 설계부터 단방향이고, 결과 안에 입력이 들어 있지 않아 되찾을 대상 자체가 없다. 무결성 확인에 해시가 쓸모 있는 이유이자, 나중에 다시 읽어야 하는 값을 담는 데는 맞지 않는 이유다 — 그런 값에는 키로 되돌릴 수 있는 암호화를 쓴다.

MD5 를 아직 써도 되나?

보안이 걸린 곳에는 안 된다. MD5 에 대한 실용적인 충돌 공격은 2004년부터 있었다. 서로 다른 두 입력이 같은 결과를 내도록 만들 수 있다는 뜻이다. 다만 공격자가 없는 용도 — 파일이 우연히 깨졌는지 확인하거나, 중복을 걸러내거나, Gravatar 해시 같은 레거시 값을 맞춰 보는 데 — 는 여전히 쓸 만하다.

어떤 해시를 써야 하나?

일반적인 무결성 확인과 서명에는 SHA-256. 비밀번호에는 이 중 어느 것도 아니다 — Argon2id·scrypt·bcrypt 처럼 일부러 느리고 솔트를 쓰는 비밀번호 전용 해시를 쓴다. 빠른 해시는 정확히 잘못된 도구다. 속도는 공격자를 돕는다.

같은 텍스트인데 도구마다 해시가 다르다

알고리즘이 아니라 해시되는 바이트가 다른 경우가 거의 전부다. 끝에 붙은 줄바꿈, CRLF 와 LF 의 차이, 다른 문자 인코딩 같은 것들이다. 이 도구는 입력을 UTF-8 로 해시하고 줄바꿈을 덧붙이지 않는다.

해시와 암호화는 뭐가 다른가?

암호화는 키로 되돌릴 수 있다 — 키를 가진 쪽이 풀도록 만들어진 것이다. 해시는 누구도 되돌릴 수 없고, 키가 없으며, 길이가 고정된 결과를 낸다. 데이터를 다시 꺼내야 한다면 필요한 것은 해시가 아니라 암호화다.

입력이 서버로 전송되나?

아니다. SHA 는 브라우저의 Web Crypto API 가, MD5 는 이 페이지의 자바스크립트가 계산한다. 보낼 백엔드 자체가 없다.

여기서 막힌다면

이 도구가 따르는 규격

함께 쓰는 도구