MD5, SHA-256 및 기타 해시를 생성하는 방법

· 4 분 소요

해싱은 모든 입력 — 비밀번호, 파일, 메시지 — 을 고정 길이 문자열로 변환합니다. 동일한 입력은 항상 동일한 해시를 생성하지만 입력의 가장 작은 변경도 완전히 다른 해시를 생성합니다. 이는 무결성 검증, 비밀번호 저장 및 디지털 서명에 해싱을 필수적으로 만듭니다.

해싱 작동 방식

해시 함수는 모든 크기의 입력을 받아 고정 크기의 출력을 생성합니다:

입력 SHA-256 해시(처음 16자)
hello 2cf24dba5fb0a30e...
Hello 185f8db32271fe25...
hello! ce06092fb948d9ff...

단일 문자가 변경되거나(소문자 h를 대문자 H로) 추가되면 해시가 완전히 변경되는 것을 보세요. 이를 눈사태 효과라고 합니다.

일반적인 해시 알고리즘

알고리즘 길이 상태 사용 용도
MD5 32자 깨짐(안전하지 않음) 레거시 체크섬, 비보안 사용
SHA-1 40자 깨짐(안전하지 않음) 레거시 시스템만
SHA-256 64자 안전 파일 무결성, 디지털 서명
SHA-512 128자 안전 고보안 응용 프로그램

SHA-256은 대부분의 용도에 대한 현재 표준입니다. MD5와 SHA-1은 이를 요구하는 레거시 시스템과 상호 작용할 때만 사용해야 합니다.

해시를 생성하는 방법

  1. 알고리즘 선택 — MD5, SHA-1, SHA-256, SHA-384 또는 SHA-512를 선택하세요. 특별한 이유가 없는 한 SHA-256을 사용하세요.
  2. 텍스트 입력 또는 파일 가져오기 — 텍스트를 입력하거나 붙여넣거나 해시할 파일을 선택하세요.
  3. 해시 복사 — 결과는 검증, 저장 또는 비교에 사용 가능한 16진수 문자열입니다.

실용적 사용

파일 무결성 검증 — 파일을 다운로드하고 그 해시를 공식적으로 게시된 해시와 비교하세요. 일치하면 파일이 진짜이고 손상되지 않은 것입니다.

비밀번호 저장 — 응용 프로그램은 비밀번호 자체가 아닌 비밀번호 해시를 저장합니다. 로그인할 때 입력이 해시되어 저장된 해시와 비교됩니다.

데이터 중복 제거 — 큰 파일을 해시하여 바이트 단위로 비교하지 않고 동일한지 빠르게 결정하세요.

API 보안용 HMAC — API 요청에 서명하고 전송 중에 변경되지 않았음을 보장하기 위해 HMAC(비밀 키가 있는 해시)를 사용하세요.

자주 묻는 질문

MD5, SHA-1, SHA-256의 차이점은 무엇입니까?

MD5는 128비트 해시(32 16진수 자)를 생성하고, SHA-1은 160비트(40자), SHA-256은 256비트(64자)를 생성합니다. MD5와 SHA-1은 암호학적으로 깨진 것으로 간주됩니다. SHA-256은 현재 안전하며 무결성 검증과 보안에 권장됩니다.

원본 데이터를 찾기 위해 해시를 역방향으로 변환할 수 있습니까?

아니요. 해시 함수는 설계상 단방향입니다. 수학적으로 해시를 입력으로 역방향으로 변환할 수 없습니다. 그러나 일반적인 비밀번호는 미리 계산된 테이블(레인보우 테이블)에서 발견될 수 있으므로 해싱 전에 비밀번호에 솔트를 추가하는 것이 중요합니다.

HMAC란 무엇입니까?

HMAC(Hash-based Message Authentication Code)는 해시 함수와 비밀 키를 결합합니다. 데이터의 무결성과 진위성을 모두 검증합니다 — 변경되지 않았으며 비밀 키를 알고 있는 사람이 생성했음을 증명합니다.

내 데이터가 서버로 전송됩니까?

아니요. 모든 해싱은 Web Crypto API를 사용하여 브라우저에서 실행됩니다. 텍스트와 파일이 기기를 떠나지 않습니다.