SomeeLab.tools

해시 생성기 — MD5·SHA-1·SHA-256

아무 텍스트나 넣으면 MD5, SHA-1, SHA-256, SHA-384, SHA-512 해시를 한 번에 보여줍니다. 가입 없이 브라우저에서 바로 계산됩니다.

MD5 · SHA-1MD5와 SHA-1은 충돌을 실제로 만들 수 있습니다. 배포처가 올려둔 체크섬과 파일을 대조하는 정도로만 쓰고, 비밀번호나 서명처럼 보안이 걸린 곳에는 SHA-256 이상을 쓰세요.

해시는 되돌릴 수 없습니다

암호화는 열쇠가 있으면 원문으로 돌아옵니다. 해시는 그런 열쇠가 없습니다. 아무리 긴 입력이든 정해진 길이의 값 하나로 뭉개 버리는 일방통행이라, 결과만 보고 원문을 계산해 낼 방법이 없습니다.

그래서 해시는 “같은지”를 확인하는 데 씁니다. 내려받은 파일이 배포처가 올려둔 값과 같은지, 저장된 비밀번호와 방금 입력한 값이 같은지 견주는 식입니다. 감춘 뒤 나중에 꺼내 봐야 하는 값이라면 해시가 아니라 암호화를 써야 합니다.

어떤 알고리즘을 고를까

  • MD5 — 1991년 알고리즘입니다. 서로 다른 두 입력이 같은 해시를 갖도록 만드는 일이 노트북으로 몇 초면 됩니다. 그런데도 파일 배포처가 아직 MD5 체크섬을 올리기 때문에 대조용으로는 남아 있습니다.
  • SHA-1 — 2017년에 실제 충돌 문서 두 개가 공개됐습니다. 새로 쓸 이유가 없습니다.
  • SHA-256 — 지금의 기본값입니다. 인증서, 서명, 블록체인이 이 자리에 있습니다.
  • SHA-384·SHA-512 — 64비트 연산을 쓰기 때문에 64비트 기기에서는 SHA-256보다 오히려 빠를 수 있습니다. 더 긴 값이 필요할 때 고릅니다.

무결성 확인이 목적이라면 SHA-256으로 충분합니다. 상대가 MD5 값만 공개했다면 그 값으로 대조하되, 파일이 신뢰할 수 있는 곳에서 왔는지는 별도로 판단하세요.

비밀번호에는 이것만으로 부족합니다

비밀번호를 SHA-256으로 저장하는 것은 평문보다 낫지만 여전히 위험합니다. 해시는 빠르게 계산하도록 설계된 함수라, 공격자는 초당 수십억 개를 시도할 수 있습니다. 흔한 비밀번호는 이미 표로 만들어져 있습니다.

비밀번호에는 bcrypt, scrypt, Argon2처럼 일부러 느리게 만든 함수를 쓰세요. 계산 비용을 조절할 수 있고 사용자마다 다른 솔트를 자동으로 붙입니다. 직접 구현하지 말고 쓰는 언어의 표준 라이브러리를 쓰면 됩니다.

같은 파일인데 값이 다를 때

이 도구는 입력을 UTF-8 바이트로 바꿔 해시합니다. 명령줄 도구와 값이 다르다면 대개 눈에 안 보이는 차이 때문입니다.

  • 줄 끝 문자 — 윈도우의 \r\n과 유닉스의 \n은 다른 바이트입니다.
  • 마지막 줄바꿈echo는 기본적으로 줄바꿈을 붙입니다. echo -n을 쓰거나 printf로 바꿔 보세요.
  • BOM — 일부 편집기가 파일 앞에 3바이트를 붙입니다.