python常用模組——hashlib
阿新 • • 發佈:2018-12-10
加密模組 hashlib
python中的hashlib模組主要提供了兩種加密演算法;一種的md5,另一種是sha;
方法:
1. md5 = openssl_md5(...)
返回一個md5物件;把字串轉換為位元組形式;
2. sha1 = openssl_sha1(...)
返回一個sha1物件;把字串轉換為位元組形式;
3. sha224 = openssl_sha224(...)
返回一個sha224物件;把字串轉換為位元組形式;
4. sha256 = openssl_sha256(...)
返回一個sha256物件;把字串轉換為位元組形式;
5. sha384 = openssl_sha384(...)
返回一個sha384物件;把字串轉換為位元組形式;
6. sha512 = openssl_sha512(...)
返回一個sha512物件;把字串轉換為位元組形式;
對於sha演算法,越高,演算法越複雜,安全度越高;但是加密效率也越低;sha256使用的是最多的;
7. new = _hashnew(name, data=b'', **kwargs)
返回一個新的hash物件(根據name命名的演算法);加密資料必須是位元組(二進位制)形式;
8. pbkdf2_hmac(...)
pbkdf2_hmac(hash_name, password, salt, iterations, dklen=None) -> key 基於密碼的金鑰派生函式2以HMAC為偽隨機函式。
加密物件的方法
1. update(arg)
用雜湊表中的位元組更新雜湊物件。重複呼叫 相當於 將所有引數串聯在一起單個呼叫;詳見後面案例;
2. digest()
以二進位制形式返回加密字元;即從加密物件中取字串加密後的密文(二進位制形式);
3. hexdigest()
以字元形式返回加密字元;即從加密物件中取字串加密後的密文(字串形式);
4. copy()
返回一個雜湊物件的副本;
案例
下面以md5加密演算法為例;其他演算法一樣;
#!/usr/bin/env python # -*- coding: utf-8 -*- import hashlib m=hashlib.md5() print(m) # 輸出 < md5 HASH object @ 0x00000245E45E03C8> m.update("wjz".encode('utf8')) m.update("wjk".encode('utf8')) print(m.hexdigest()) # 輸出 0e48d6f05b543d8b513f918eb537b533 print(m.digest()) # 輸出 b'\x0eH\xd6\xf0[T=\x8bQ?\x91\x8e\xb57\xb53' m2=hashlib.md5() m2.update('wjzwjk'.encode('utf8')) print(m2.hexdigest()) # 輸出 0e48d6f05b543d8b513f918eb537b533 print(m2.digest()) # 輸出 b'\x0eH\xd6\xf0[T=\x8bQ?\x91\x8e\xb57\xb53'
從上面案例中,可以發現: 兩次update字串'wjz''wjk',等效於 一次update字串'wjzwjk';