python hashlib模块详解
hashlib 是python自带的加密模块,提供了一些基础常用的加密方式,如:md5(), sha1(), sha224(), sha256(), sha384(), sha512(), blake2b(), blake2s()
Hash 对象提供了4个方法:
--update(data):更新hash对象的字节数据,data是需要加密的文本内容,需要转为bytes类型,如果”abc123”.encode() 将字符串”abc123”转为bytes类型。
--digest():返回加密后的bytes值内容,类型:bytes。
--hexdigest():返回加密后的哈希值文本内容。
--copy():复制hash 对象信息。
Md5加密:
方式一:
import hashlib m = hashlib.md5("123456".encode()) print("打印md5密文-bytes类型:",m.digest()) print("打印md5密文-哈希值:",m.hexdigest())
执行结果:
方式二:
import hashlib m = hashlib.md5() m.update("123456".encode()) # 通过md5对象的update方法对内容进行加密 print("打印md5加密结果,bytes类型:",m.digest()) print("打印md5加密结果,哈希值:",m.hexdigest())
执行结果:
方式三:
import hashlib # name 对应加密类型,不区分大小写 # data 需要加密的内容,需转为bytes类型 m = hashlib.new(name="mD5",data="123456".encode()) print("打印通过new调用md5加密结果,bytes类型:",m.digest()) print("打印通过new调用md5加密结果,哈希值:",m.hexdigest())
执行结果:
Sha1加密:
方式一、
import hashlib m = hashlib.sha1("123456".encode()) print("直接通过sha1方法进行加密,结果bytes类型:",m.digest()) print("直接通过sha1方法进行加密,哈希值:",m.hexdigest())
执行结果:
方式二、
import hashlib m = hashlib.sha1() m.update("123456".encode()) print("通过sha1对象update方法进行加密,结果bytes类型:",m.digest()) print("通过sha1对象update方法进行加密,哈希值:",m.hexdigest())
执行结果:
方式三、
import hashlib # name 对应加密类型,不区分大小写 # data 需要加密的内容,需转为bytes类型 m = hashlib.new(name="sha1",data="123456".encode()) print("打印通过new调用sha1加密结果,bytes类型:",m.digest()) print("打印通过new调用sha1加密结果,哈希值:",m.hexdigest())
执行结果:
sha224加密:
方式一、
import hashlib m = hashlib.sha224("123456".encode()) print("直接通过sha224方法进行加密,结果bytes类型:",m.digest()) print("直接通过sha224方法进行加密,哈希值:",m.hexdigest())
执行结果:
方式二、
import hashlib m = hashlib.sha224() m.update("123456".encode()) print("通过sha224对象update方法进行加密,结果bytes类型:",m.digest()) print("通过sha224对象update方法进行加密,哈希值:",m.hexdigest())
执行结果:
方式三、
import hashlib # name 对应加密类型,不区分大小写 # data 需要加密的内容,需转为bytes类型 m = hashlib.new(name="sha224",data="123456".encode()) print("打印通过new调用sha224加密结果,bytes类型:",m.digest()) print("打印通过new调用sha224加密结果,哈希值:",m.hexdigest())
执行结果:
sha256加密:
方式一、
import hashlib m = hashlib.sha256("123456".encode()) print("直接通过sha256方法进行加密,结果bytes类型:",m.digest()) print("直接通过sha256方法进行加密,哈希值:",m.hexdigest())
执行结果:
方式二、
import hashlib m = hashlib.sha256() m.update("123456".encode()) print("通过sha256对象update方法进行加密,结果bytes类型:",m.digest()) print("通过sha256对象update方法进行加密,哈希值:",m.hexdigest())
执行结果:
方式三、
import hashlib # name 对应加密类型,不区分大小写 # data 需要加密的内容,需转为bytes类型 m = hashlib.new(name="sha256",data="123456".encode()) print("打印通过new调用sha256加密结果,bytes类型:",m.digest()) print("打印通过new调用sha256加密结果,哈希值:",m.hexdigest())
执行结果:
sha384加密:
方式一、
import hashlib m = hashlib.sha384("123456".encode()) print("直接通过sha384方法进行加密,结果bytes类型:",m.digest()) print("直接通过sha384方法进行加密,哈希值:",m.hexdigest())
执行结果:
方式二、
import hashlib m = hashlib.sha384() m.update("123456".encode()) print("通过sha384对象update方法进行加密,结果bytes类型:",m.digest()) print("通过sha384对象update方法进行加密,哈希值:",m.hexdigest())
执行结果:
方式三、
import hashlib # name 对应加密类型,不区分大小写 # data 需要加密的内容,需转为bytes类型 m = hashlib.new(name="sha384",data="123456".encode()) print("打印通过new调用sha384加密结果,bytes类型:",m.digest()) print("打印通过new调用sha384加密结果,哈希值:",m.hexdigest())
执行结果:
Sha512加密:
方式一、
import hashlib m = hashlib.sha512("123456".encode()) print("直接通过sha512方法进行加密,结果bytes类型:",m.digest()) print("直接通过sha512方法进行加密,哈希值:",m.hexdigest())
执行结果:
方式二、
import hashlib m = hashlib.sha512() m.update("123456".encode()) print("通过sha512对象update方法进行加密,结果bytes类型:",m.digest()) print("通过sha512对象update方法进行加密,哈希值:",m.hexdigest())
执行结果:
方式三、
import hashlib # name 对应加密类型,不区分大小写 # data 需要加密的内容,需转为bytes类型 m = hashlib.new(name="sha512",data="123456".encode()) print("打印通过new调用sha512加密结果,bytes类型:",m.digest()) print("打印通过new调用sha512加密结果,哈希值:",m.hexdigest())
执行结果:
blake2b加密:
方式一、
import hashlib m = hashlib.blake2b("123456".encode()) print("直接通过blake2b方法进行加密,结果bytes类型:",m.digest()) print("直接通过blake2b方法进行加密,哈希值:",m.hexdigest())
执行结果:
方式二、
import hashlib m = hashlib.blake2b() m.update("123456".encode()) print("通过blake2b对象update方法进行加密,结果bytes类型:",m.digest()) print("通过blake2b对象update方法进行加密,哈希值:",m.hexdigest())
执行结果:
方式三、
import hashlib # name 对应加密类型,不区分大小写 # data 需要加密的内容,需转为bytes类型 m = hashlib.new(name="blake2b",data="123456".encode()) print("打印通过new调用blake2b加密结果,bytes类型:",m.digest()) print("打印通过new调用blake2b加密结果,哈希值:",m.hexdigest())
执行结果:
blake2s加密:
方式一、
import hashlib m = hashlib.blake2s("123456".encode()) print("直接通过blake2s方法进行加密,结果bytes类型:",m.digest()) print("直接通过blake2s方法进行加密,哈希值:",m.hexdigest())
执行结果:
方式二、
import hashlib m = hashlib.blake2s() m.update("123456".encode()) print("通过blake2s对象update方法进行加密,结果bytes类型:",m.digest()) print("通过blake2s对象update方法进行加密,哈希值:",m.hexdigest())
执行结果:
方式三、
import hashlib # name 对应加密类型,不区分大小写 # data 需要加密的内容,需转为bytes类型 m = hashlib.new(name="blake2s",data="123456".encode()) print("打印通过new调用blake2s加密结果,bytes类型:",m.digest()) print("打印通过new调用blake2s加密结果,哈希值:",m.hexdigest())
执行结果:
copy()用法:
import hashlib # copy 方法使用 m = hashlib.md5() m.update("123456".encode()) print("原hash 对象的解密结果:",m.hexdigest()) # copy 方法使用 copy_u = m.copy() print("复制hash对象,打印的解密结果:",copy_u.hexdigest()) # 复制后,重新加密其他内容 copy_u.update("abcdef".encode()) print("复制新加密结果:",copy_u.hexdigest())
执行结果: