파이썬에서는 해쉬를 별도 구현 할 필요가 없음.
# 예제 # 8개의 hashTable을 생성했다 hash_table = list([0 for i in range(8)]) # key를 만드는 함수인데 hash라는 함수를 써서 구함 def get_key(data): return hash(data) # key를 받아서 8로 나눈 나머지 값을 return def hash_fucntion(key): return key % 8 # data의 value를 저장하는 함수 def save_data(data,value): hash_address = hash_fucntion(get_key(data)) # hash를 위에 만든 함수들을 거쳐 hash_address 에 넣는다 hash_table[hash_address] = value # value를 지정함 # value를 읽는 함수 def read_data(data): hash_address = hash_fucntion(get_key(data)) return hash_table[hash_address] save_data('Dave','01021283829') save_data('kkkk','01031243567') print(read_data('Dave')) 01021283829
open hashing
: 해쉬 테이블 저장공간 외의 공간을 활용하는 기법 (Channing 기법) / 중복되는 data들을 linked_list 자료구조로 저장 한다.close hashing
: hashTable 안에 있는 공간을 이용해서 해결하는 방범해쉬 함수를 재정의 및 해쉬 테이블 저장공간을 확대 / 만약에 8 개 저장하려면 16개 이상으로 만든다.
유명한 해쉬 함수들이 있음: SHA , SHA-256
import hashlib
data = 'test'.encode()
hash_object = hashlib.sha1()
hash_object.update(data)
hex_dig = hash_object.hexdigest()
print(hex_dig)