Python 3 암호 화(hashlib 와 hmac)모듈 의 실현
hashlib 모듈 은 서로 다른 안전 해시/안전 해시(Secure Hash Algorithm)와 정보 요약 알고리즘(Message Digest Algorithm)을 위해 공공 적 이 고 통용 되 는 인 터 페 이 스 를 실현 하 였 으 며 통 일 된 입구 라 고 할 수 있 습 니 다.hashlib 모듈 은 md5 와 sha 모듈 의 기능 을 통합 시 켰 을 뿐만 아니 라 MD5,SHA 1,SHA 224,SHA 256,SHA 384 와 SHA 512 등 더 많은 알고리즘 에 대한 함수 도 제공 하기 때문이다.
hashlib 모듈 사용 절차:
1)해시 알고리즘 에 대응 하 는 해시 대상(예 를 들 어 이름 은 hash)을 가 져 옵 니 다.hashlib.new(해시 알고리즘 이름,초기 출입 정보)함 수 를 통 해 해시 대상 을 가 져 올 수 있 습 니 다.예 를 들 어 hashlib.new('MD5','Hello'),hashlib.new('SHA 1','Hello')등 입 니 다.hashlib.해시 알고리즘 이름()을 통 해 이 해시 대상 을 얻 을 수 있 습 니 다.예 를 들 어 hashlib.md5(),hashlib.sha 1()등 입 니 다.
2)설정/추가 입력 정보:해시 대상 의 update(입력 정보)방법 을 호출 하면 정 보 를 설정 하거나 추가 로 입력 할 수 있 습 니 다.이 방법 을 여러 번 호출 하면 매번 전달 하 는 매개 변 수 를 매개 변수 로 update()방법 을 대체 하 는 것 과 같 습 니 다.여러 번 호출 하 는 것 은 덮어 쓰 는 것 이 아니 라 누 적 된 것 이다.
3)입력 정보 에 대응 하 는 요약 가 져 오기:받 은 해시 대상 의 digest()방법 이나 hexdigest()방법 을 호출 하면 update()방법 에 전 달 된 문자열 매개 변수 에 대한 요약 정 보 를 얻 을 수 있 습 니 다.digest()방법 으로 되 돌아 오 는 요약 정 보 는 바 이 너 리 형식의 문자열 입 니 다.NUL 바 이 트 를 포함 하여 비 ASCII 문 자 를 포함 할 수 있 습 니 다.이 문자열 의 길 이 는 해시 대상 의 digest 를 통과 할 수 있 습 니 다.크기 속성 획득;한편,hexdigest()방법 이 되 돌려 주 는 요약 정 보 는 16 진수 형식의 문자열 입 니 다.이 문자열 에는 16 진수 의 숫자 만 포함 되 어 있 고 길 이 는 digest()가 결 과 를 되 돌려 주 는 길이 의 2 배 입 니 다.이 는 메 일의 안전 한 상호작용 이나 다른 바 이 너 리 가 아 닌 환경 에서 사용 할 수 있 습 니 다.
#!/usr/bin/env python
# coding=utf-8
__author__ = 'Luzhuo'
__date__ = '2017/5/19'
# hash_demo.py Hash ( )
# : MD5, SHA1 SHA224 SHA256 SHA384 SHA512
import hashlib
def hash_demo():
m = hashlib.md5()
m.update(b"hello")
m.update(b"world!") # = hello + world!
hash_hex = hashlib.sha3_512(b"luzhuo.me").hexdigest()
print(m.digest_size)
print(m.digest()) # hash
print(m.hexdigest()) # hash
print(hash_hex)
#
hash_bytes = hashlib.pbkdf2_hmac('sha256', b'luzhuo.me', b'80', 100000)
print(hash_bytes)
def hash_func():
# hashlib.new(name[, data]) // hashlib( ), name= , data:
hash = hashlib.new('ripemd160', b'luzhuo.me')
#
dics = hashlib.algorithms_guaranteed # hash
dics = hashlib.algorithms_available # Python hash , new() ,
# hashlib.pbkdf2_hmac(hash_name, password, salt, iterations, dklen=None) // hash_name:hash , password: , salt: , iterations: , dklen:
hash_bytes = hashlib.pbkdf2_hmac('sha256', b'luzhuo.me', b'80', 100000)
# hash
num = hash.digest_size # hash
num = hash.block_size # hash
strs = hash.name # hash , new()
hash.update(b"data") # hash.update(a) hash.update(b) == hash.update(a+b)
hash_bytes = hash.digest() # hash
hash_str = hash.hexdigest() # 16 hash
hash = hash.copy() # hash
if __name__ == "__main__":
hash_demo()
# hash_func()
hashmac 모듈 개요:앞에서 말 했 듯 이 HMAC 알고리즘 도 하나의 암호 화 알고리즘 이 고 위의 각종 해시 알고리즘/해시 알고리즘 을 바탕 으로 합 니 다.다만 연산 과정 에서 키 를 사용 하여 안전성 을 강화 할 수 있 습 니 다.hmac 모듈 은 HAMC 알고리즘 을 실현 하여 해당 하 는 함수 와 방법 을 제공 하고 hashlib 가 제공 하 는 api 와 대체적으로 일치 합 니 다.
hmac 모듈 사용 절차:
hmac 모듈 모듈 의 사용 절 차 는 hashlib 모듈 의 사용 절차 와 대체적으로 일치 합 니 다.다만 첫 번 째 단계 에서 hmac 대상 을 가 져 올 때 hmac.new()함수 만 사용 할 수 있 습 니 다.hmac 모듈 은 구체 적 인 해시 알고리즘 에 대응 하 는 함 수 를 제공 하지 않 아 hmac 대상 을 가 져 올 수 있 습 니 다.
#!/usr/bin/env python
# coding=utf-8
__author__ = 'Luzhuo'
__date__ = '2017/5/19'
# hmac_demo.py HMAC
# hashlib key
import hmac
def hmac_demo():
#
h = hmac.new(b"net")
h.update(b"luzhuo.me")
h_str = h.hexdigest()
print(h_str)
#
boolean = hmac.compare_digest(h_str, hmac.new(b"net", b"luzhuo.me").hexdigest())
print(boolean)
def hmac_func():
# key ,
# hmac.new(key, msg=None, digestmod=None) // hmac , key: , msg:update(msg), digestmod:hash ( hashlib.new())( md5)
hc = hmac.new(b"key")
# hmac
hc.update(b"msg") # hc.update(a) hc.update(b) == hc.update(a+b)
hash_bytes = hc.digest() # hash
hash_str = hc.hexdigest() # 16 hash
hc = hc.copy() # hmac
num = hc.digest_size # hash
num = hc.block_size # hash
strs = hc.name # hash
# hmac.compare_digest(a, b) // hash , : str / bytes-like object, ( : , a==b)
boolean = hmac.compare_digest(hmac.new(b"net", b"luzhuo.me").digest(), hmac.new(b"net", b"luzhuo.me").digest())
if __name__ == "__main__":
hmac_demo()
# hmac_func()
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.