ホームページ >バックエンド開発 >Python チュートリアル >Python での hashlib 暗号化モジュールの分析 (コード例)

Python での hashlib 暗号化モジュールの分析 (コード例)

不言
不言転載
2018-11-23 17:01:182035ブラウズ
この記事の内容は、Python のハッシュリブ暗号化モジュールの解析 (コード例) に関するものであり、一定の参考価値がありますので、困っている方は参考にしていただければ幸いです。

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 サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。