디렉토리
A, hashlib 모듈
비밀번호 암호화 : 아무리 당신이 문자열을 던져 무엇인지, 그가 고정 길이 문자열의 문자열을 반환하지 않습니다
- 그것은 고정 된 문자열이된다
- 해시 문자열과 동일한 결과
- 중첩
1.0.1 hashlib는 무엇인가
해시 알고리즘이다 (Python3. 대신 MD5 및 SHA 모듈 모듈, 주 공급자 SHA1, SHA224, SHA256, SHA384, SHA512, MD5 알고리즘을 사용 hashlib 모듈 버전), 알고리즘 동작을 무리를 얻을 들어오는 콘텐츠를 받아 해시 값.
hashlib 값 기능 :
- 한 들어오는 내용으로, 일반 텍스트 암호로 얻은 해시 값은 비 암호화 체크섬을 전송하는 데 사용 할 수 있습니다
- 솔루션이 아닌 일반 텍스트 암호의 보안을 보장 할 수있는 콘텐츠에 해시 값으로 반환 할 수 없습니다
- 만큼 동일한 해시 알고리즘이 사용되는 상관없이 인증의 방법 내용을, 얻어진 고정 길이의 해시 값이 텍스트 해싱 사용될 수있다
사실, 해시 알고리즘은 사용자가 전송 된 원료를 수신하는 공장에서 다음과 같이 볼 반환 제품을 처리 해시 값 수
import hashlib
import hashlib
m = hashlib.md5()
m.update('hello'.encode('utf8'))
print(m.hexdigest())
#
5d41402abc4b2a76b9719d911017c592
import hashlib
m = hashlib.md5() # 固定的写法
m.update(b'123456')
# m.update(b'456')
print(m.hexdigest())
#
e10adc3949ba59abbe56e057f20f883e
import hashlib
m = hashlib.md5() # 固定的写法
m.update(b'123')
m.update(b'456')
print(m.hexdigest())
#
e10adc3949ba59abbe56e057f20f883e
1.0.2 히트 라이브러리를 암호화하는 해시 알고리즘 균열
해시 암호화 알고리즘은 매우 강력 보이지만, 그 라이브러리,도 1에 도시 한 다음의 코드 역 용액 타격 할 수있는 특정의 결함이다.
import hashlib
# 假定我们知道hash的微信会设置如下几个密码
pwd_list = [
'hash3714',
'hash1313',
'hash94139413',
'hash123456',
'123456hash',
'h123ash',
]
def make_pwd_dic(pwd_list):
dic = {}
for pwd in pwd_list:
m = hashlib.md5()
m.update(pwd.encode('utf-8'))
dic[pwd] = m.hexdigest()
return dic
def break_code(hash_pwd, pwd_dic):
for k, v in pwd_dic.items():
if v == hash_pwd:
print('hash的微信的密码是===>%s' % k)
hash_pwd = '0562b36c3c5a3925dbe3c4d32a4f2ba2'
break_code(hash_pwd, make_pwd_dic(pwd_list))
마이크로 편지 암호 해시는 ===> hash123456
비밀번호 노크 라이브러리를 방지하기 위해, 우리는 또 다른 HMAC 모듈에서 파이썬을 사용할 수 있습니다, 그것은 암호화 내부 및 콘텐츠 키를 생성 한 후 우리는 거래의 일종했다.
그 최종 결과 HMAC 모듈 일관성을 확인하려면 다음을 확인해야합니다
- Hmac.new 지정된 초기 키와 괄호 안의
- 아무리 여러 번 업데이트, 동일한 컨텐츠를 축적하기 위해 함께 내용을 확인하지
두, HMAC 모듈
HMAC 모듈 : 비밀 번호 암호화, 당신은 소금을 추가 할 수 있습니다
참고 HMAC 모듈은 바이너리 데이터 암호화를 받아
동일한 사용
import hmac
# 注意hmac模块只接受二进制数据的加密
h1 = hmac.new(b'hash')
h1.update(b'hello')
h1.update(b'world')
print(h1.hexdigest())
905f549c5722b5850d602862c34a763e
h2 = hmac.new(b'hash')
h2.update(b'helloworld')
print(h2.hexdigest())
905f549c5722b5850d602862c34a763e
h3 = hmac.new(b'hashhelloworld')
print(h3.hexdigest())
a7e524ade8ac5f7f33f3a39a8f63fd25