본문 바로가기

Language/Python

Python hashlib로 sha256인코딩한 hex값 만들기

728x90

Python hashlib로 sha256인코딩한 hex값 만들기

Hash는 암호화된 값입니다.

012345
      

위와 같이 값을 배열에 저장 하려면 arr[0] = 'hello' 이렇게 저장을 하면 되지만

012345
hello     

저장된 값에 접근을 하려면 반드시 index를 알아야 합니다. index를 모른다면 배열을 0번부터 원하는 값이 나올때까지 모두 검색을 해야 합니다.

그래서 배열 번호로 접근 하는 것이 아니라 key로 데이터에 접근을 하기 위해 Hash를 사용하는데 Hash를 사용하는 맵은 HashMap이라고 합니다.

Hash는 Hash를 만들어주는 함수가 있고 그 함수가 return하는 값은 배열의 번호 입니다. 예를들어 'aa'라는 key를 make_hash(char) 라는 함수를 이용해 hash로 만들었다면 0이라는 값을 return 해주고 map['aa'] 이렇게 검색하면 'hello'를 찾을 수 있습니다.

Hash를 만드는 함수는 여러가지가 존재 합니다. hashlib문서를 보면 SHA1, SHA224, SHA256, SHA384, SHA512 이러한 function들이 들어있다고 합니다. 또한 hash함수는 직접 만들 수도 있습니다.

def _get_hash(self, key):
    hash = 0
    for char in key:
        hash += ord(char)
    return hash % 100

위 코드는 나머지를 이용해 hash를 만드는 코드 입니다.

여러가지 hash함수 중에서 아래 코드는 sha256함수를 이용하는 코드 입니다.

import hashlib

string = 'a'
encoded_string = string.encode()
print(encoded_string)
hexdigest = hashlib.sha256(encoded_string).hexdigest()
print('a:', hexdigest)

string2 = 'a.'
encoded_string2 = string2.encode()
print('a.:', hashlib.sha256(encoded_string2).hexdigest())

결과

b'a'

a: ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb

a.: 5ab640fad553cbf927dc96b8e7878a9844b2fa79b7a4f5c515e186970ec53027

블록체인의 블록을 암호화 하는 기법이 sha256입니다.

소스코드 설명을 해보면 일단은 import hashlib해주어야 합니다.

그리고 sha256으로 암호화 시키려면 .encode() 해주어야 합니다다.

인코딩을 하지 않으면 에러가 나기 때문에 에러가 난다면 꼭 인코딩을 해주세요.

그래서 a라는 글자를 sha256으로 암호화를 하면 ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb 이게 됩니다. 여러분들도 위 코드를 돌려 보시면 같은 결과가 나올 것입니다. 64글자나 됩니다.

여기에 점을 하나 찍으면 a.인데 이걸 sha256으로 암호화 하면 5ab640fad553cbf927dc96b8e7878a9844b2fa79b7a4f5c515e186970ec53027 이렇게 됩니다. 전혀 다른 값이 나옵니다. 그래서 이 방법이 암호화 방법으로 널리 사용되고 있습니다.

end.

728x90
블로그 주인장입니다. 원하시는 정보는 얻으셨나요? 이 포스트에서 추가로 필요한 정보가 있으시면 여기에 남겨주세요.