python 모듈 hashlib(암호 화 서비스)지식 포인트 설명

3902 단어 pythonhashlib
공식 문안:https://docs.python.org/zh-cn/3/library/hashlib.html
hashlib---안전 해시 와 메시지 요약
Python 의 hashlib 는 MD5,SHA 1 등 일반적인 요약 알고리즘 을 제공 합 니 다.
요약 digest algorithms 알고리즘 은 무엇 입 니까?요약 알고리즘 은 해시 해시 해시 알고리즘,해시 알고리즘 이 라 고도 부른다.이것 은 함 수 를 통 해 임의의 길이 의 데 이 터 를 고정된 데이터 문자열 로 변환 합 니 다.
hash 알고리즘
모든 유형의 hash 는 하나의 구축 기 방법 을 가지 고 있 으 며,hash 대상 과 같은 간단 한 인 터 페 이 스 를 되 돌려 줍 니 다.
예 를 들 면:
sha 256()을 사용 하여 SHA-256 hash object 를 만 듭 니 다.업데이트()를 사용 하여 bytes-like object 에 먹 일 수 있 습 니 다.그리고 digest()나 hexdigest()로 데이터 요약 을 얻 을 수 있 습 니 다.
hashlib 모델 에는 sha 1(),sha 224(),sha 256(),sha 384(),sha 512(),blake2b(),and blake2s()와 같은 많은 알고리즘 이 있 습 니 다.파 이 썬 이 사용 하 는 OpenSSL libary 를 볼 다른 알고리즘 도 많다.구체 적 으로 문 서 를 보다.
algorithms 사용guaranteed 상수,모듈 이 모든 플랫폼 에서 지원 하 는 알고리즘 보기:

>>> hashlib.algorithms_guaranteed
{'blake2s', 'sha256', 'sha3_512', 'sha1', 'shake_128', 'sha3_256', 'sha3_384', 'blake2b', 'sha3_224', 'sha512', 'md5', 'shake_256', 'sha224', 'sha384'}
algorithms 사용available 상수,컴 파일 러 가 실 행 될 때 사용 할 수 있 는 hash 알고리즘

>>> hashlib.algorithms_available
{'sha3_256', 'blake2b', 'md5', 'sha512_224', 'sha384', 'md4', 'sha256', 'sha512', 'whirlpool', 'sha224', 'sha512_256', 'shake_128', 'sha3_384', 'ripemd160', 'blake2s', 'sha3_512', 'sha1', 'sm3', 'shake_256', 'sha3_224', 'md5-sha1'}
예:

>>> import hashlib
>>> m = hashlib.sha256()
>>> m.update(b" the spammish repetition")  #       , bytes     。
>>> m.name  #hash     
'sha256'
>>> m.digest() #    update()      
b'U<\x9bP\xb1\xa8\x9a\x9aE\x0f;h\xdb\x04\x11\xc1\x08\xfaH\xa7\t\xbfF\x91\x01\x13\xa1\x87\xb6\xd9`\x96'
>>> m.digest_size  #     
>>> m.block_size  #hash        
>>> m.hexdigest()  #         ,       email    binary  
'553c9b50b1a89a9a450f3b68db0411c108fa48a709bf46910113a187b6d96096'
>>>
서로 다른 알고리즘 은 안전 이 다 르 기 때문에 sha 256 은 sha 1 보다 안전 하지만 안전 한 알고리즘 일수 록 느 릴 뿐만 아니 라 요약 길이 도 길다.
요약 알고리즘 응용
사용자 가 입력 한 암 호 를 저장 합 니 다:암 호 를 정확하게 저장 하 는 방식 은 사용자 의 명문 암 호 를 저장 하지 않 고 사용자 암 호 를 저장 하 는 요약 입 니 다.예 를 들 어 MD5.
요약 알고리즘 은 많은 곳 에서 광범 위 하 게 응용 되 고 있다.요약 알고리즘 은 암호 화 알고리즘 이 아니 라 암호 화 에 사용 할 수 없습니다.
예:
MD5 를 저장 하 는 장점 은 운영 자가 데이터 베 이 스 를 방문 할 수 있어 도 사용자 의 명문 암 호 를 알 수 없다 는 것 이다.
사용자 로그 인 을 검증 하 는 함 수 를 만 듭 니 다.사용자 가 입력 한 암호 가 정확 한 지 에 따라 True 나 False 로 돌아 갑 니 다.

# -*- coding: utf-8 -*-
db = {
  'michael': 'e10adc3949ba59abbe56e057f20f883e',
  'bob': '878ef96e86145580c38c87f0410ad153',
  'alice': '99b1c2188db85afee403b1536010c2c9'
}

import hashlib

def calc_md5(password):
  m = hashlib.md5()
  m.update(password.encode('utf-8'))
  return m.hexdigest()

def login(user, password):
  return db[user] == calc_md5(password)
    

#   :
assert login('michael', '123456')
assert login('bob', 'abc999')
assert login('alice', 'alice2008')
assert not login('michael', '1234567')
assert not login('bob', '123456')
assert not login('alice', 'Alice2008')
print('ok')
우리 가 정리 한 관련 지식 이 모두 에 게 도움 이 되 기 를 바 랍 니 다.당신들 의 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기