ホームページ >バックエンド開発 >Python チュートリアル >Python での hashlib 暗号化モジュールの分析 (コード例)
hashlib モジュールは文字列のハッシュ暗号化に使用されるモジュールで、平文と暗号文は 1 対 1 に対応しており、登録時やパスワードなどの暗号化に使用されます。ログイン。
1. 関数の分析
1. 暗号化アルゴリズムは 5 つあります
md5(),sha1(),sha224(),sha256() 、sha3840()、sha512()はそれぞれ異なる暗号化暗号文を取得する。
2. hashlib.hexdigest(): 暗号化された暗号文を取得します (16 進数、パラメータなし)
3. hashlib.digest(): 暗号化された暗号文を取得します (バイナリ、パラメータなし)
4. hashlib.copy(): 現在作成されているハッシュ オブジェクトをコピーします (パラメーターはありません)
5. update(str1,encoding('utf-8'')): 暗号化を更新します 取得された暗号文は次のものとは異なります元の暗号文
6. hash.name: 現在取得されているハッシュ オブジェクトの暗号化アルゴリズムを表示します
7. hash.digest_size: ハッシュ シークレットキーは何バイトを占めますか?
8. hash.block_size: ハッシュ データ ブロックのサイズ
9. hashlib.algorithms_guaranteed: すべてのプラットフォームでサポートされているハッシュ アルゴリズムを表示します
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. 方法は 2 つあります。ハッシュ オブジェクトを作成するには:
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. ハッシュ アルゴリズム暗号化
暗号文暗号化アルゴリズムで得られた暗号文は不可逆ですが、暗号文と平文の関係は1対1であるため復号が可能です ビッグデータを利用して暗号文と平文の関係を保存します データベースに偶然対応する暗号文があれば一般的に使用される復号 Web サイト: 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 中国語 Web サイトの他の関連記事を参照してください。