해시 생성기

아무 텍스트나 파일의 MD5, SHA-1, SHA-256, SHA-384, SHA-512, SHA-3, Keccak-256, RIPEMD-160, BLAKE2b, BLAKE2s 다이제스트를 계산합니다 — 체크섬, 무결성 검사, 캐시 키에 유용합니다. 예상 다이제스트를 붙여넣어 입력과 대조 검증하거나, 알 수 없는 해시 문자열을 붙여넣어 어느 알고리즘에서 왔을지 식별하세요. SHA-1/256/384/512는 브라우저의 네이티브 WebCrypto에서 오고, 나머지는 자기 완결적인 순수 JavaScript 구현이므로 모든 것이 로컬에서 실행됩니다. 시드가 있는 랜덤 시퀀스는 랜덤 숫자 생성기를 보세요.
완전히 로컬에서 실행됩니다 — 업로드 없음. 입력은 최대 200 MB.
입력: 알고리즘:
출력 형식: SHA-1은 구형입니다 — 정말 필요한 경우가 아니라면 SHA-256/512를 우선 사용하세요.
다이제스트 줄은 "알고리즘 해시" 형식이므로 릴리스 노트나 다운로드 매니페스트에 그대로 복사할 수 있습니다.
다운로드 페이지나 매니페스트가 준 다이제스트를 붙여넣으세요. 도구는 대소문자, 공백, 콜론, sha256= 스타일 접두사, MD5 (file.exe) = 스타일 랩퍼, 여러 줄 md5sum 출력을 허용한 뒤 위에서 체크한 알고리즘과 비교합니다.
알 수 없는 해시 문자열을 붙여넣으세요. 도구는 길이, 문자 집합, 접두사를 읽고 그것을 만들어냈을 수 있는 알고리즘을 나열합니다 — 일반 hex 다이제스트부터 $2b$…, $argon2id$… 같은 PHC 스타일 비밀번호 해시까지.
알고리즘 고르기:
SHA-256은 오늘날 무결성 검사의 합리적 기본값입니다. SHA-512는 더 강하고 64비트 하드웨어에서 더 빠르며, 대가는 더 긴 출력입니다. SHA-384는 잘린 길이의 SHA-2 다이제스트가 필요할 때의 중간 선택지입니다. SHA-3는 독자적으로 설계된 NIST 표준(SHA-2 업그레이드가 아님)이며, SHA-2와 계보를 공유하지 않는 알고리즘을 원할 때의 표준 답입니다. Keccak-256은 이더리움과 몇몇 시스템이 쓰는 표준화 이전 변형으로 SHA3-256과 패딩 바이트 하나가 다릅니다. BLAKE2b/BLAKE2s는 소프트웨어 용도로 설계된 빠른 현대 해시입니다. RIPEMD-160은 Bitcoin과 OpenPGP 맥락에서 아직 쓰이는 구형 설계입니다. SHA-1과 MD5는 적대적 입력에 대해 암호학적으로 깨졌지만 중복 제거, 구형 시스템, 비적대적 체크섬에서는 정확하고 널리 쓰입니다 — 공격자가 내용을 고를 수 있는 곳에는 절대 쓰지 마세요. 오늘날 어떤 해시도 "양자 내성"이 아닙니다. 양자 컴퓨터는 서명과 키 교환을 먼저 위협하며 — Grover 알고리즘은 유효 해시 길이를 절반으로 줄일 뿐이므로 SHA-256은 이미 실용적 한계 위에 편안하게 앉아 있습니다. 해시는 결정적입니다. 같은 바이트는 언제나 같은 다이제스트를 내며, 그것이 다운로드나 설정 파일의 온전함을 검증하는 데 유용한 정확한 이유입니다.
중국 국가 해시를 찾으시나요?
중국 상용 암호학에서 요구하는 다이제스트 SM3(GB/T 32905-2016)는 이 페이지의 일부가 아닙니다 — HMAC-SM3 지원과 함께 자체 도구가 SM3 해시 생성기 페이지에 있고, SM 스위트의 나머지도 있습니다. SM4(블록 암호), SM2(서명과 암호화), SM9(식별 기반 암호).
해시 생성기 — 모든 알고리즘을 처음부터 설명
한 문장으로: 암호학적 해시 함수는 일방향 블렌더입니다 — 임의의 바이트를 받아 고정 길이 지문으로 짜내되, 같은 입력은 언제나 같은 지문을 내지만 지문은 입력을 재구성하는 방법에 대해 아무것도 말해 주지 않습니다. 이 페이지는 열한 가지를 브라우저 탭 안에서 전부 실행합니다.

아래의 모든 알고리즘은 같은 네 단계로 설명됩니다.

MD5

무엇인가. MD5(1992)는 임의의 입력을 128비트(32 hex 문자) 지문으로 압축합니다. 1990년대 컴퓨터에서 빠르도록 설계되었고 실제로 빠릅니다 — 그래서 아직도 어디에나 있습니다. 소프트웨어 다운로드 페이지, 파일 중복 제거 캐시, 구형 데이터베이스 키.

직관적인 작동 방식. 입력은 64바이트 청크로 잘립니다. 각 청크는 128비트 순환 상태에 네 번 저어집니다(약간씩 다른 네 개의 혼합 라운드), 마지막 청크 뒤 상태가 다이제스트로 인쇄됩니다. 저어주는 것은 덧셈, 회전, 테이블 조회로 이루어져 있습니다 — 그때도 싸고 지금도 쌉니다.

써야 하나? 아무도 속이려 하지 않는 체크섬 — 손상된 다운로드 감지, 중복 파일 찾기 — 에는 예, 여전히 손상을 완벽히 보고합니다. 적대적인 모든 것에는 아니요. 2004년 이후 연구자들이 몇 초 만에 같은 MD5를 가진 서로 다른 두 파일을 만들 수 있고, MD5 충돌을 이용한 실제 인증서 위조가 2008년에 있었습니다. 잠금이 아니라 일련번호로 취급하세요.

흔한 실수. 비밀번호에 MD5 사용(너무 빠름 — 그 용도에는 비밀번호 해시 생성기 참고). "MD5가 일치한다"고 파일을 신뢰하기 — 공격자가 MD5도 공개했을 때는 무의미. 전체 MD5 (file) = hash 줄을 해시 대신 붙여넣기 — 위의 검증 상자는 둘 다 받아들입니다.

SHA-1

무엇인가. SHA-1(1995, NSA)은 160비트(40 hex 문자) 다이제스트를 냅니다. 20년 동안 Git, TLS 인증서, PGP 서명의 기본 무결성 해시였습니다.

직관적인 작동 방식. MD5와 같은 계열 레시피지만 160비트 상태, 64바이트 청크당 80개 혼합 라운드, 더 넓은 연산 집합. 추가 라운드는 블렌더를 역공학하기 어렵게 하려는 것이었습니다.

써야 하나? 적대적인 모든 것에 아니요. 이론적 파쇄는 2017년 Google이 동일한 SHA-1 값을 가진 서로 다른 두 PDF를 만들면서 실용화되었습니다(SHAttered 공격, 약 6500 CPU년). Git은 여전히 객체를 SHA-1 아래 저장하지만 식별자로만 취급하며, 이후 충돌 감지를 추가했습니다. 새 작업에는 SHA-256 또는 SHA-3를 쓰세요.

흔한 실수. 160비트가 "아직 충분히 길다"고 믿기 — 파쇄는 내부 구조에 관한 것이지 무차별이 아닙니다. 둘 다 40 hex 문자라 RIPEMD-160을 SHA-1과 혼동하기(위의 식별 상자가 구별해 줍니다).

SHA-2: SHA-256, SHA-384, SHA-512

무엇인가. SHA-2 계열(2001, NSA)은 현대 무결성 검사의 일꾼입니다. SHA-256은 256비트(64 hex 문자), SHA-512는 512비트, SHA-384는 SHA-512의 결과를 384비트로 자른 것 — 프로토콜이 더 짧은 태그를 요구할 때 유용합니다.

직관적인 작동 방식. 64바이트 청크(512비트 변형은 128바이트)가 64(또는 80)라운드의 add-rotate-mix 단계를 거쳐 8워드 상태로 접힙니다. MD5와 달리 스케줄은 먼저 각 청크를 확장 버퍼로 늘리며, MD5와 SHA-1을 깨뜨린 스타일의 공격을 무너뜨린 것이 바로 이것입니다. 알아 둘 만한 흥미로운 사실: 64비트 CPU에서 SHA-512는 SHA-256보다 빠릅니다. 라운드당 두 배의 데이터를 64비트 산술로 처리하기 때문입니다.

써야 하나? 예 — SHA-256은 오늘날 파일 체크섬, 코드 서명, 인증서 지문의 기본 답이며, 20년의 분석 후에도 실용적 파쇄가 알려지지 않았습니다. 더 많은 여백이 필요하거나 플랫폼이 더 빠르게 실행할 때 SHA-384/512를 쓰세요.

흔한 실수. 비밀번호에 SHA-256 단독 사용 — 그것은 빠른 해시이고 속도가 거기서는 적입니다(bcrypt/scrypt/Argon2id를 쓰세요). 적대적 충돌 저항 설정에서 다이제스트 길이를 강도와 혼동하기 — 길이는 천장만 정합니다.

SHA-3 (SHA3-256 / SHA3-512)와 Keccak-256

무엇인가. SHA-3(2015, Bertoni·Daemen·Peeters·Van Assche의 Keccak 제안에서 표준화)는 세 번째 NIST 해시 표준입니다. SHA-2 내부와 아무것도 공유하지 않습니다 — SHA-2가 무너질 경우를 위한 독립적 백업이 되도록 정확히 그렇게 선택되었습니다.

직관적으로 보는 동작 방식. Keccak은 덩어리를 작은 상태로 젓는 대신 반복적으로 "흡수하고 짜냅니다": 입력을 5×5×64비트 스펀지에 비트 단위로 흡수하고, 스펀지 전체를 고정 순열로 뒤섞은(전체 상태에 걸친 24회 비트 연산) 뒤, 다이제스트 비트를 짜냅니다. 스펀지 그림이 아이디어의 전부입니다. 용량 비트는 절대 출력되지 않으며, 함수를 일방향으로 만드는 것이 바로 그것입니다.

Keccak-256 vs SHA3-256. 정확히 하나의 패딩 바이트가 다릅니다. Keccak 팀의 원래 제안은 마지막 블록을 0x01로 패딩했고, NIST는 표준 패딩을 0x06으로 바꿨습니다(SHA-2 시대 Keccak 용도와의 도메인 분리). 이더리움은 원래 패딩을 채택했으므로, 그 "keccak256"은 모든 입력에서 표준 SHA3-256과 다릅니다. 이 페이지는 둘 다 제공하며 따로 체크합니다.

써야 하나? 예 — 정책이 비 SHA-2 알고리즘을 원할 때의 주 선택으로, 또는 생태계가 이미 그것을 말하는 곳에서. 흔한 실제: SHA3-256과 Keccak-256이 호환된다고 가정하기(아닙니다 — 같은 입력에 대해 이 페이지가 내는 두 행을 비교하세요). "SHA-3"가 SHA-2를 대체한다고 가정하기 — 둘 다 안전하고 SHA-2가 여전히 더 널리 배포되어 있습니다.

RIPEMD-160

무엇인가. RIPEMD-160(1996, 유럽 학계의 RIPE 컨소시엄, Dobbertin·Bosselaers·Preneel이 강화)은 160비트를 출력합니다. NSA가 설계한 SHA 계열과 의도적으로 독립적인 완전한 유럽 설계입니다.

직관적인 작동 방식. 각 64바이트 청크가 80라운드의 두 평행선으로 처리됩니다. 상수와 회전량이 다르며, 끝에서 두 선과 옛 상태가 결합됩니다. 이중 트랙 구조는 1990년대의 다른 해시들을 깨뜨리던 차분 공격에 저항하려는 설계자들의 방법이었습니다.

써야 하나? 실제로는 주로 다른 시스템 안에서 살아남습니다. Bitcoin 주소는 공개 키를 RIPEMD-160(SHA-256(pk))으로 해시하고, 구형 OpenPGP 키는 해시 옵션으로 제공하며, BitTorrent v1 피스의 전통적 해시입니다(SHA-1과 함께). 실용적 충돌 공격은 없지만 160비트 크기는 이 페이지에서 가장 작은 안전 여백을 줍니다. 새 독립 용도에는 SHA-256이나 SHA-3를 선호하세요.

흔한 실수. 두 평행선이 "두 배 강하다"고 믿기 — 출력 크기가 충돌 저항을 제한합니다. SHA-1과 혼동하기(같은 40-hex 길이. 위의 식별 상자가 두 가능성을 나란히 나열합니다).

BLAKE2b-512와 BLAKE2s-256

무엇인가. BLAKE2(2013, Aumasson, Neves, Wilcox-O'Hearn, Winnerlein)는 소프트웨어 속도를 위해 설계된 해시입니다. BLAKE2b는 64비트 플랫폼을 겨냥해 최대 512비트 출력, BLAKE2s는 32비트 플랫폼을 겨냥해 최대 256비트 출력.

직관적인 작동 방식. SHA-3 최종 후보 BLAKE에서 내려왔으며, 그 코어는 스트림 암호 ChaCha에서 빌린 키 있는 순열입니다. 4×4 워드 행렬이 열과 대각선 혼합 단계를 번갈아 뒤섞습니다 — 격자를 먼저 위아래로, 그다음 대각선을 따라 섞는 것처럼 — 청크당 12회(BLAKE2b) 또는 10회(BLAKE2s). 그 단계들이 CPU 명령에 아름답게 대응되므로, BLAKE2는 SHA-3에 필적하는 보안을 내면서 흔히 MD5보다 빠릅니다.

써야 하나? 예 — 완전히 현대적이고 깨지지 않은 설계로, 성능에 민감한 소프트웨어(일부 생태계의 패키지 무결성, 내용 주소 저장소, 백업 중복 제거)와 빠른 MAC으로 인기입니다. 이 페이지에서 BLAKE2b-512는 가장 긴 다이제스트, BLAKE2s-256은 간결한 현대 옵션입니다.

흔한 실수. "빠르면 약할 것"이라고 생각하기 — BLAKE2는 지름길이 아니라 설계로 빠릅니다. BLAKE2가 키(그러면 MAC이 됨)나 개인화 문자열도 받는다는 것을 모르기 — 이 페이지는 언제나 일반 무키 모드로 씁니다.

검증·식별 상자 읽는 법

검증. 검증 상자는 붙여넣은 것을 정규화합니다 — 대소문자, 두 자릿수마다의 콜론, sha256= 접두사, BSD 스타일의 SHA256 (file) = hash 포장, 해시가 뒤에 오는 GNU md5sum 줄, 떨어져 있는 \r\n — 그런 다음 현재 입력(텍스트 또는 선택한 파일)에 대해 체크된 각 알고리즘을 다시 계산하고 일치하는 알고리즘을 보고합니다. 녹색 일치는 “이 바이트가 바로 게시자가 해시한 것”을 의미합니다; 빨간색은 체크된 알고리즘이 그것을 만들어내지 못했다는 뜻입니다 — 더 많은 알고리즘을 체크해 보거나 붙여넣기가 잘렸는지 확인하세요.

식별. 식별 상자는 아무것도 해시하지 않습니다; 문자열의 형태를 읽을 뿐입니다. 길이가 먼저 후보를 좁힙니다: hex 32자는 MD5일 수 있고, 40자는 SHA-1 또는 RIPEMD-160, 64자는 SHA-256 / SHA3-256 / Keccak-256 / BLAKE2s-256, 96자는 SHA-384, 128자는 SHA-512 / SHA3-512 / BLAKE2b-512입니다. 접두사는 비밀번호 해시를 드러냅니다($2a$/$2b$/$2y$ bcrypt, $argon2id$, $scrypt$, $6$ sha512crypt, $1$ MD5-crypt) — 그것은 다른 종류입니다(비밀번호 해시 생성기 참조). 이 페이지는 의도적으로 그것들을 계산하지 않습니다. +, /, =를 포함하고 길이가 4의 배수인 문자열은 hex 다이제스트보다 Base64로 인코딩된 데이터일 가능성이 큽니다; 도구는 이를 디코드하고 해당 바이트 길이를 보고합니다.

식별이 말할 수 있고 없는 것. 길이와 문자 집합은 형식의 지문이지 알고리즘의 증거가 아닙니다: 64개의 hex 문자로 된 문자열은 SHA-256에서 나왔을 수도 있고 잘린 SHA-512에서 나왔을 수도 있습니다. 식별 상자는 가능성에 순위를 매깁니다; 실제로 여러분의 바이트가 어떤 알고리즘과 맞는지 증명하는 것은 검증 상자입니다.

열한 개를 한눈에
알고리즘 다이제스트 발명 "The quick brown fox jumps over the lazy do
MD5128비트19929e107d9d372bb6826bd81d3542a419d6
SHA-1160비트19952fd4e1c67a2d28fced849ee1bb76e7391b93eb12
SHA-256256비트2001d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
SHA-384384비트2001ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1
SHA-512512비트200107e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6
SHA3-256256비트201569070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04
SHA3-512512비트201501dedd5de4ef14642445ba5f5b97c15e47b9ad931326e4b0727cd94cefc44fff23f07bf543139939b49128caf436dc1bdee54fcb24023a08d9403f9b4bf0d450
Keccak-256256비트2015년 이전4d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15
RIPEMD-160160비트199637f332f68db77bd9d7edd4969571ad671cf9dd3b
BLAKE2b-512512비트2013a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918
BLAKE2s-256256비트2013606beeec743ccbeff6cbcdf5d5302aa855c256c29b88c8ed331ea1a6bf3c8812

위 표의 모든 다이제스트는 이 페이지의 엔진이 직접 계산한 것입니다 — 모든 알고리즘을 체크하고 샘플을 클릭해 항목별로 비교하면 검증할 수 있습니다. SHA-3, Keccak, RIPEMD-160, BLAKE2 행은 이 사이트의 암호화 도구가 공유하는 자체 호스팅 crypto-shared.js 커널에서 나옵니다.

FAQ

다운로드를 검증할 때 어느 상자를 믿어야 하나요? 검증 상자에서 SHA-256을 체크하세요 — 요즘 대부분의 배포자는 SHA-256 또는 SHA-512를 발급합니다. 식별 상자는 후보 목록만 줄 뿐, 여러분의 파일에 대해 아무것도 증명하지 못합니다.

Keccak-256이 왜 목록에 있나요? 이더리움, Swarm 등 소수의 원장 시스템이 표준화 이전의 패딩을 표준으로 채택했기 때문입니다. 이더리움 keccak256을 검증할 때는 SHA3-256이 아니라 그 행을 사용해야 합니다.

서로 다른 두 입력이 같은 다이제스트를 공유할 수 있나요? 이론상으로는 가능합니다 — 무한히 많은 입력이 유한한 다이제스트 집합으로 매핑되기 때문입니다(비둘기집 원리). 실무적으로는 우주의 열적 죽음 이전에 그런 입력 한 쌍을 찾을 수 있는지가 바로 “충돌 저항성”이 측정하는 것이며, 위 알고리즘 중 MD5와 SHA-1을 제외하고는 지금까지 모두 견뎌내고 있습니다.

해시는 암호화인가요? 아니요. 암호화는 키로 되돌릴 수 있지만 해시는 단방향 분쇄기입니다. 이 페이지에는 다이제스트를 다시 텍스트로 "복호화"할 수 있는 것이 아무것도 없습니다 — 이것은 결함이 아니라 특징입니다.