python常用模块——hashlib

加密模块 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';

posted @ 2018-12-10 09:14  hacker&haidao  阅读(354)  评论(0编辑  收藏  举报