파이썬 -> hashlib 모듈과 모듈 HMAC

디렉토리

A, hashlib 모듈

비밀번호 암호화 : 아무리 당신이 문자열을 던져 무엇인지, 그가 고정 길이 문자열의 문자열을 반환하지 않습니다

  1. 그것은 고정 된 문자열이된다
  2. 해시 문자열과 동일한 결과
  3. 중첩

1.0.1 hashlib는 무엇인가

해시 알고리즘이다 (Python3. 대신 MD5 및 SHA 모듈 모듈, 주 공급자 SHA1, SHA224, SHA256, SHA384, SHA512, MD5 알고리즘을 사용 hashlib 모듈 버전), 알고리즘 동작을 무리를 얻을 들어오는 콘텐츠를 받아 해시 값.

hashlib 값 기능 :

  1. 한 들어오는 내용으로, 일반 텍스트 암호로 얻은 해시 값은 비 암호화 체크섬을 전송하는 데 사용 할 수 있습니다
  2. 솔루션이 아닌 일반 텍스트 암호의 보안을 보장 할 수있는 콘텐츠에 해시 값으로 반환 할 수 없습니다
  3. 만큼 동일한 해시 알고리즘이 사용되는 상관없이 인증의 방법 내용을, 얻어진 고정 길이의 해시 값이 텍스트 해싱 사용될 수있다

사실, 해시 알고리즘은 사용자가 전송 된 원료를 수신하는 공장에서 다음과 같이 볼 반환 제품을 처리 해시 값 수

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 모듈 일관성을 확인하려면 다음을 확인해야합니다

  1. Hmac.new 지정된 초기 키와 괄호 안의
  2. 아무리 여러 번 업데이트, 동일한 컨텐츠를 축적하기 위해 함께 내용을 확인하지

두, 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

추천

출처www.cnblogs.com/SkyOceanchen/p/11402667.html