블록체인
정보를 블록이라고 하는 단위로 저장하여 저장된 블록들을 체인 형태로 묶은 저장 기술
해시함수 (Hash Function)
임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수
•
{ 해시, 해시 값, 해시 코드 } = 해시 함수에 의해 얻어지는 값
•
데이터를 X, 해시함수를 H라고 표기할 때 해시를 H(X)로 표기
•
산업에서 가장 널리 쓰이는 해시 함수는 SHA-2 (e.g., SHA-256), SHA-3 (e.g., Keccak)
MD5(Message-Digest algorithm 5)와 SHA의 차이
속도 MD5
보안성 SHA
MD5는 값이 중복되는 "Collision" 문제도 나타나기 때문에 SHA를 권장하는 추세
•
SHA(Secure Hash Algorithm)-256
◦
임의의 길이 메시지를 256 비트(bits)의 축약된 메시지로 만들어내는 해시 알고리즘
import hashlib
string1 = "hello"
result1 = hashlib.sha256(string1.encode()).hexdigest()
print(result1)
string2 = "hello!"
result2 = hashlib.sha256(string2.encode()).hexdigest()
print(result2)
Python
복사
Rules
1.
하나의 데이터에서 오직 단 하나의 해시가 도출
2.
임의의 데이터 X와 Y가 있을 때 hash값 H(𝒳)
a.
if X == Y then H(X) == H(Y)
b.
if X != Y then H(X) != H(Y)
c.
if H(X) == H(Y) then X == Y
예제 1
예제 2
이 때 두 해시 함수 모두 256 비트 길이의 해시를 생성한다.