python 모듈 hashlib(암호 화 서비스)지식 포인트 설명
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')
우리 가 정리 한 관련 지식 이 모두 에 게 도움 이 되 기 를 바 랍 니 다.당신들 의 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.