hashlib 모듈은 문자열의 해시 암호화에 사용되는 모듈입니다. 일반 텍스트와 암호 텍스트가 일대일로 대응되며 등록 및 로그인 시 사용자 이름, 비밀번호 등을 암호화하는 데 사용됩니다.
1. 기능 분석
1. 서로 다른 암호화된 암호문을 얻기 위한 5가지 암호화 알고리즘
md5(), sha1(), sha224(), sha3840(), sha512() .
2. hashlib.hexdigest(): 매개변수 없이 암호화된 암호문을 가져옵니다
3. hashlib.digest(): 매개변수 없이 암호화된 암호문을 가져옵니다
4. 현재 생성된 해시 객체, 매개변수 없음
5. update(str1,encoding('utf-8'')): 암호화된 암호문을 업데이트합니다. 획득된 암호문은 원래 암호문과 다릅니다
6. 현재 획득한 해시 객체의 암호화 알고리즘
7. hash.digest_size: 해시 키가 차지하는 바이트 수
8. hash.block_size: 해시 데이터 블록의 크기
9. 해시 알고리즘을 봅니다. 모든 플랫폼에서 지원됩니다.
10. hashlib.algorithms_available: 모든 해시 암호화 알고리즘 보기
코드 예:
import hashlib def hash_fun_1(str1): #创建一个hahsh对象并对str1加密 m=hashlib.md5(str1.encode('utf-8')) print('获取加密的密文,16进制,无参数',m.hexdigest()) print('获取加密的密文,二进制,无参数:',m.digest()) print('获取hash块的大小:',m.block_size) print('hash密钥占多少个字节:',m.digest_size) print('查看当前获得的hash对象的加密算法',m.name) #更新密文 m.update(str1.encode('utf-8')) print('获取加密的密文,16进制,无参数', m.hexdigest()) print('获取加密的密文,二进制,无参数:', m.digest()) print('获取hash块的大小:', m.block_size) print('hash密钥占多少个字节:', m.digest_size) print('查看当前获得的hash对象的加密算法', m.name) if __name__ == '__main__': hash_fun_1('mark')
결과:
获取加密的密文,16进制,无参数 ea82410c7a9991816b5eeeebe195e20a 获取加密的密文,二进制,无参数: b'\xea\x82A\x0cz\x99\x91\x81k^\xee\xeb\xe1\x95\xe2\n' 获取hash块的大小: 64 hash密钥占多少个字节: 16 查看当前获得的hash对象的加密算法 md5 获取加密的密文,16进制,无参数 ac673f4dbac79922838901b5974a419a 获取加密的密文,二进制,无参数: b'\xacg?M\xba\xc7\x99"\x83\x89\x01\xb5\x97JA\x9a' 获取hash块的大小: 64 hash密钥占多少个字节: 16 查看当前获得的hash对象的加密算法 md5
2. 애플리케이션:
1. 해시 객체에는 두 가지 방법이 있습니다.
m=hashlib.new('md5',b'cai')#选择md5加密函数加密字符串‘cai’ m=hashlib.md5('cai'.encode('utf-8'))#加密的另一种写法
2. 기능 사용법: 암호화해야 할 문자열이 너무 큰 경우 동일한 해시 객체를 사용하여 여러 번 암호화할 수 있습니다. update(a)+update(b)=update( a+b)
예:
import hashlib m1=hashlib.md5() m2=m1.copy() m1.update('a'.encode('utf-8')) m1.update('b'.encode('utf-8')) print(m1.hexdigest())#输出密文 m2.update('ab'.encode('utf-8')) print(m2.hexdigest())#输出另一个密文
작업 결과:
187ef4436122d1cc2f40dc2b92f0eba0 187ef4436122d1cc2f40dc2b92f0eba0
3. 해시 알고리즘 암호화
암호화 알고리즘으로 얻은 암호문은 되돌릴 수 없지만 암호문과 평문의 관계는 일대일 대응이 됩니다. 암호문과 평문 사이의 관계를 저장하는 데 빅데이터가 사용됩니다. 데이터베이스에 해당 암호문이 있으면 평문을 찾아 복호화를 완료할 수 있습니다. http://www.cmd5. com /에 암호문을 입력하여 평문을 검색합니다.
크래킹 난이도를 높이려면 일반적으로 비밀번호를 여러 번 암호화해야 합니다. hashlib 모듈에는 전용 기능이 있습니다.
코드 예:
import hashlib import binascii #sha256为算法名称,12345678为要加密的密码 #mark指的是杂质,额外添加的东西,使得破解更难 #10 000是迭代次数,可以理解为加密次数 pwd=hashlib.pbkdf2_hmac('sha256',b'12345678',b'mark',10000) print(binascii.hexlify(pwd).decode('utf-8'))
결과:
129d11e9ba1f3ef4e1393516d434f356363ffe68d7baca37fd1e91f0e87abe36
위 내용은 Python의 hashlib 암호화 모듈 분석(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!