SHA1 해시 생성기

SHA-1은 160비트(40개의 16진수 문자) 길이의 다이제스트 값을 생성하며, git 객체 ID, 기존 SVN 체크섬 및 2017년 이전의 다양한 서명 시스템에서 사용되는 해시 함수로 활용됩니다. 어떤 텍스트를 붙여넣어도 일정한 결과를 제공하는 결정론적 해시가 생성됩니다. 중요한 경고는 다음과 같습니다: SHA-1은 충돌 저항성 측면에서 결함이 있으며(SHAttered, 2017), 새로운 서명 생성이나 비밀번호 저장에는 사용해서는 안 되며, 오직 비적대적인 무결성 검증에만 적합합니다.

SHA-1 해시를 계산하는 방법

  1. 1

    입력 내용을 붙여넣으세요

    어떤 텍스트이든, 문자열, 텍스트로 변환된 전체 파일, 또는 16진수 시퀀스입니다.

  2. 2

    인코딩 방식은 UTF-8입니다.

    입력 데이터는 해싱 전에 UTF-8 바이트로 직렬화되며, 이는 OpenSSL, Python hashlib 및 Node.js의 암호 기반 라이브러리에서 사용되는 기본 설정과 일치합니다.

  3. 3

    머클-담가드 루프가 작동 중입니다.

    메시지는 패딩 처리를 거쳐 512비트 블록으로 분할된 후, 각 블록당 80회에 걸쳐 SHA-1 압축 함수를 통해 처리된다.

  4. 4

    40자 길이의 16진수 다이제스트를 복사하세요

    출력 값은 항상 소문자로 된 16진수 문자 40개(160비트)입니다.

SHA-1 개요

속성
출력 크기 160비트 / 40개의 16진수 문자
블록 크기 512비트
라운드 수 80
충돌 저항성 깨짐 (2^63 선택된 접두사)
예상 이미지 저항성 온전함 (작성 시점 기준)
속도 최신형 코어 기준 약 500MB/s

SHA-1이 여전히 수용 가능한 경우

  • Git: 커밋 ID와 블롯 ID는 모두 SHA-1 방식으로 생성되며(선택적으로 SHA-256도 사용 가능함). 충돌이 발생할 경우 역사 기록이 혼란스러워질 수 있으나, 저자의 키가 없으면 커밋을 위조할 수는 없습니다.
  • 비보안 중복 제거: 공격자가 포함되지 않는 위협 모델을 적용하는 객체 저장소 콘텐츠 주소화 방식.
  • 후방 호환성 API. GitHub의 X-Hub-Signature(v1)와 같은 기존 웹훅.
  • 법의학적 식별자. 아카이브 전반에 걸쳐 중복 데이터 제거를 위한 파일 지문 분석.

SHA-1이 사용할 수 없는 경우

  • TLS 인증서: 브라우저들은 2017년부터 SHA-1 인증서를 신뢰하지 않게 되었습니다.
  • 코드 서명: 마이크로소프트, 애플 및 모질라는 SHA-1 서명을 거부했습니다.
  • 비밀번호 해싱: Argon2id 또는 bcrypt를 사용하십시오.
  • 새로운 디자인을 적용한 HMAC. 최소한 HMAC-SHA-256를 사용하십시오.

출력을 확인하고자 할 경우

어떤 유닉스 시스템에서도 echo -n "hello" | sha1sum와 비교해 보세요. 문자열 hello의 해시 값은 aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d입니다.

자주 묻는 질문

수학적인 관점에서는 그렇지 않습니다. 일반적인 짧은 입력 문자열의 경우, 사전을 미리 계산해 둔 공격자는 이를 즉시 식별할 수 있으므로 해시만으로는 비밀번호를 보호하기에 부족합니다. 40자 길이의 무작위 문자열의 경우에는 실용적인 역산 방법이 존재하지 않습니다.

아니요. SHA(Secure Hash Algorithm, 안전 해시 알고리즘)는 NIST가 발표한 알고리즘 계열입니다. SHA-1은 1995년에 개발된 160비트 길이의 알고리즘이며, SHA-2 계열에는 SHA-224, SHA-256, SHA-384, SHA-512가 포함됩니다.

10년 이상의 역사와의 호환성을 위해, 2017년부터 git는 선택된 접두사 충돌(SHA-1DC)에 대한 보호 기능을 강화했으며 새로운 프로젝트에서는 SHA-256 저장소를 지원합니다.

저희 서버에서 계산됩니다. 입력한 텍스트는 암호화된 연결을 통해 전송되어 표준 SHA-1 함수로 해싱되며, 40자 길이의 다이제스트가 반환됩니다. 제출하신 텍스트는 저장하지 않습니다. SHA-1은 단방향 함수이므로 다이제스트 자체를 원래 입력으로 되돌릴 수는 없습니다.

관련 도구

이 도구는 다른 언어로도 제공됩니다