[블록체인] 해시함수 이해 1 - 해시함수란?

in #kr6 years ago (edited)

블록체인, 암호화폐 기술에 대한 내용에 항상 등장하는 것 중 하나가 해시함수(Hash Function)죠.
해시함수는 무엇일까요?
정말 쉽고 간략하게 설명해 보겠습니다.

해시함수를 아주 간단히 말하면,

어떤 길이의 데이터를 입력해도 정해진 길이의 결과를 주는 함수라고 할 수 있습니다.

말은 정말, 정말 간단하죠? 단지 확~~ 마음에 와 닫지 않을 뿐.

아래 그림은 SHA256 해시 함수를 그림으로 간략히 표시한 겁니다.
hash function image.png

말로는 잘 이해가 안될 수도 있으니 실제 SHA256 해시의 결과를 확인해 보겠습니다.
SHA 256은 256bits의 결과를 주는 해시함수인데요. 파이썬 hashlib에서 제공하는 함수를 사용했습니다.

t1 = b'Hello, SHA 256'
sha256(t1).hexdigest()

결과는

'a110c0e99329666d8ed6aa919a6875e79106b6b8c3e906a6145b44d8240d988c'

입니다.

결과가 8진수로 표시되었기때문에 각 글자당 4bits이라서 4 X 64 글자 = 256 bits 입니다.

t2 = b'This is a sha 256 test. The input length can be random'
sha256(t2).hexdigest()
'37ea99e0274c2d1f72c35dc291578717b43d31a76b17e260977a6c6ac9fb5755'

다른 길이의 입력을 넣어도 결과는 항상 256bits입니다. SHA256 이니까요.

해시함수는 아래와 같은 특성을 가지고 있습니다.

  • 어떤 길이의 데이터도 입력으로 사용될 수 있습니다.
  • 결과는 정해진 길이로 나옵니다. SHA256은 입력되는 데이터의 길이와 상관없이 항상 256bits를 결과로 줍니다.
  • 계산 시간이 합리적으로 추정 가능해야합니다. 입력 길이에 제한이 없기때문에 최소한 입력 길이에 선형적으로 비례하는 특성은 있어야합니다.

정말 간단하죠?

입력 길이에 상관없이 정해진 길이의 결과를 내어주는 함수 == 해시함수

하지만 정말 재미있는 해시함수의 특징이 있습니다.
특별히 블록체인에서 관심있어하고 실제로 사용되는 특성은 아래와 같은데요.

  • 결과값이 중복될 가능성이 거의 없다.
  • 입력값을 알수 없다.
  • 결과값을 알려주고 입력값을 찾을 수 있는 특별한 공식이 없다.

위의 특성을 하나하나 보다보면 왜 블록체인에서 해시함수를 자주 언급하는지 알게됩니다.

다음 포스트에는 위 3가지 특성에 대해서 좀 더 자세히 알아보도록 하겠습니다.

관련 포스트 목록입니다.
[블록체인] 해시함수 이해 1 - 해시함수란?(현재글)
[블록체인] 해시함수 이해 2 - 특성 1 - 충돌이 거의 발생하지 않는다.
[블록체인] 해시함수 이해 3 - 특성 2 - 원본 내용을 알 수 없다
[블록체인] 해시함수 이해 4 - 특성 3 - 퍼즐 게임을 만들 수 있다

Sort:  

다음 포스팅도 넘나 기대됩니다

글 하나 쓰는게 이리 어렵군요. 생각으로는 그냥 쓱쓱 써 질 것 같았는데요.
암튼 일단 마음 먹은 시리즈는 빠른 시간 안에 끝내는 걸로....ㅎㅎ

Coin Marketplace

STEEM 0.30
TRX 0.12
JST 0.034
BTC 63799.64
ETH 3130.40
USDT 1.00
SBD 3.97