본문 바로가기
system_fundamentals/security_cryptography

해시는 왜 복호화가 안될까

by 죄니안죄니 2026. 5. 13.
반응형

해시는 왜 복호화가 안될까

많은 사람들이 처음 해시(Hash)를 배우면 이렇게 생각한다.

"암호화했으니까 복호화하면 원본이 나오겠지?"
 

하지만 해시는 암호화(Encryption)가 아니다.

핵심 차이는 여기 있다.

암호화는 되돌릴 수 있지만,
해시는 되돌릴 수 없다.
 

즉 해시는 애초에:

복호화를 전제로 만든 기술이 아니다.
 

1. 해시는 "요약값" 생성 기술

해시는 데이터를 입력받아:

고정 길이의 결과값(Hash Value)
 

을 만든다.

예:

"hello"
 

→ SHA-256:

2cf24dba5fb0...
 

중요한 건:

입력 길이와 관계없이
결과 길이는 고정
 

이라는 점이다.


예:

입력 데이터 결과 길이
a 256bit
hello 256bit
10GB 파일 256bit

2. 왜 복호화가 불가능한가?

핵심 이유는:

정보가 압축되면서
원본 정보가 사라지기 때문
 

이다.


예를 들어 생각해보자.

사람 이름을 다음처럼 변환한다고 가정:

김철수 → 1234
이영희 → 5678
 

이건 단순 매핑이라 다시 복원 가능하다.


하지만 해시는 다르다.

해시는:

엄청나게 큰 입력 공간
 

제한된 고정 길이 출력
 

으로 변환한다.

즉:

원본 정보 일부가 버려진다
 

3. 비유하면 이런 느낌

예를 들어:

소설책 전체
 

를 입력받아:

책의 지문 하나
 

만 남기는 것과 비슷하다.


지문은:

  • 동일 여부 확인은 가능하지만
  • 원래 책 내용을 복원할 수는 없다.

4. 해시는 수학적으로 일방향 함수

해시는:

One-Way Function
 

이라고 부른다.

즉:

계산은 쉽지만,
역산은 현실적으로 불가능
 

한 함수다.


예:

h=H(m)h = H(m)

  • m
    → 원본 데이터
  • H
    → 해시 함수
  • h
    → 해시값

중요한 건:

h만 보고
m을 찾는 게 현실적으로 불가능
 

하도록 설계됐다는 것.


5. "복호화"가 없는 이유

암호화는 원래:

복원 목적
 

이 있다.

즉:

  • 암호화
  • 복호화

가 한 쌍이다.


하지만 해시는 목적 자체가 다르다.

해시 목적은:

원본 비교
무결성 검증
 

이다.

즉:

"같은 데이터인가?"
 

를 빠르게 확인하려는 기술이다.


6. 비밀번호 저장에 해시를 쓰는 이유

만약 비밀번호를 암호화해서 저장하면:

복호화 키가 털리는 순간
모든 비밀번호 유출
 

가능하다.


그래서 비밀번호는 보통:

  • bcrypt
  • Argon2
  • PBKDF2

같은 해시 기반 방식으로 저장한다.


로그인 시:

입력 비밀번호 → 해시
 

를 다시 계산해서 비교한다.

즉 서버도:

원래 비밀번호를 모른다
 

7. 그런데 왜 "해시 복호화 사이트"가 있나?

사실 그건 복호화가 아니다.

대부분:

미리 계산된 값 비교
 

다.


예:

123456
 

의 SHA-256을 미리 저장해두고:

같은 해시값 발견
 

시 원문을 알려주는 것.


즉:

역산한 게 아니라
사전(Dictionary) 매칭
 

이다.


8. 그래서 Salt를 사용한다

예를 들어:

password123
 

를 모든 사용자가 쓰면:

같은 해시값
 

이 나온다.


그래서 랜덤값(Salt)을 추가한다.

예:

hash(password + salt)
 

그러면:

같은 비밀번호라도
매번 다른 해시값
 

이 생성된다.


9. 해시의 핵심 특징

좋은 해시는:


1) 일방향성

복원이 현실적으로 불가능
 

2) 결정성

같은 입력 → 같은 결과
 

3) Avalanche Effect

입력 한 글자만 바뀌어도:

결과가 완전히 달라짐
 

4) 빠른 계산

대부분 매우 빠르다.

(단 bcrypt 같은 패스워드 해시는 일부러 느리게 설계)


10. 결국 해시의 본질

해시는 데이터를 숨기기 위한 기술이 아니라:

데이터의 동일성과 무결성을 검증하기 위한 기술
 

이다.

그리고 복호화가 안 되는 이유는:

애초에 되돌릴 수 있도록 설계되지 않았기 때문
 

이라고 볼 수 있다.

반응형

댓글