티스토리 뷰

블록체인, 암호화폐 기술에 대한 내용에 항상 등장하는 것 중 하나가 해시함수(Hash Function)죠.

해시함수는 무엇일까요?

정말 쉽고 간략하게 설명해 보겠습니다.


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

어떤 길이의 데이터를 입력해도 정해진 길이의 결과를 주는 함수

라고 할 수 있습니다.

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


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


말로는 잘 이해가 안될 수도 있으니 실제 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 이니까요.


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

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

정말 간단하죠?

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

하지만 정말 재미있는 해시함수의 특징이 있습니다.

특별히 블록체인에서 관심있어하고 실제로 사용되는 특성은 아래와 같은데요.

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

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

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


포스트 순서입니다.

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

[블록체인] 해시함수 이해 2 - 특성 1 - 충돌이 거의 발생하지 않는다.

[블록체인] 해시함수 이해 3 - 특성 2 - 원본 내용을 알 수 없다

[블록체인] 해시함수 이해 4 - 특성 3 - 퍼즐 게임을 만들 수 있다==코인 마이닝 문제 출제


댓글
댓글쓰기 폼