해시

SHA-1, SHA-256, SHA-384, SHA-512 해시 생성

MD5는 제공되지 않습니다 — 암호학적으로 손상되어 있으며 브라우저의 SubtleCrypto API에서 사용할 수 없습니다. SHA-256 또는 더 강력한 것을 사용하세요.

암호학적 해시란?

암호학적 해시 함수는 어떤 입력 — 단일 문자, 5페이지 문서 — 를 고정 길이의 16진수 문자열로 변환합니다. SHA-256은 항상 64개의 16진수 문자를 생성하며, SHA-512는 128개를 생성합니다. 두 가지 중요한 속성: 동일한 입력은 항상 동일한 해시를 생성하고, 동일한 해시를 가진 두 개의 서로 다른 입력을 찾는 것은 계산적으로 불가능합니다 (충돌 저항).

해시는 파일 무결성 검사(파일을 다운로드하셨나요? SHA-256을 게시된 값과 비교하세요), 비밀번호 저장(서버는 비밀번호가 아닌 해시를 저장합니다), HMAC 서명, 콘텐츠 주소 지정 저장소(Git은 커밋을 식별하기 위해 SHA-1을 사용합니다) 등에 사용됩니다.

사용 사례

  • 다운로드 무결성 확인 — 다운로드한 파일의 SHA-256을 게시자가 나열한 체크섬과 비교합니다.
  • 중복 콘텐츠 감지 — 문자열이나 파일 내용을 해시하여 원본을 저장하지 않고 중복을 찾아냅니다.
  • 캐시 키 생성 — 긴 입력(URL, 쿼리 문자열, 요청 본문)을 Redis 또는 Memcached를 위한 고정 길이 키로 변환합니다.
  • Git 아티팩트 감사 — SHA-1을 계산하여 Git 플럼바깅 외부의 blob/tree 객체 주소를 검사합니다.

예시

입력결과
helloSHA-256: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
(empty string)SHA-256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

자주 묻는 질문

왜 MD5가 없나요?

MD5는 암호학적으로 손상되어 있습니다 — 노트북에서 몇 초 만에 충돌을 생성할 수 있습니다. 브라우저의 SubtleCrypto API는 의도적으로 이를 노출하지 않습니다. SHA-256 또는 더 강력한 것을 사용하세요.

파일을 해시할 수 있나요?

이 도구는 텍스트 입력을 해시합니다. 파일을 해시하려면 브라우저 콘솔에 다음을 입력하세요: `crypto.subtle.digest('SHA-256', await file.arrayBuffer())`.

해시는 실행 간에 결정적인가요?

네 — 'hello'의 SHA-256은 항상 동일한 값입니다. 해시 함수는 설계상 순수합니다 (소금, 무작위성 없음).

SHA-1을 사용해야 하나요?

새로운 애플리케이션에는 사용을 피하세요 — 충돌 공격에 대해 손상되었습니다. SHA-1은 여전히 파일 체크섬 및 Git에서 일반적이지만, 보안 관련 사항에는 SHA-256을 사용하세요.

내 입력이 어디로 전송되나요?

아니요. 해싱은 브라우저의 네이티브 암호화 API를 사용하므로, 아무것도 귀하의 장치를 떠나지 않습니다.