首页 > 编程语言 > 详细

Python:加密与解密hashlib模块

时间:2020-03-24 15:09:16      阅读:59      评论:0      收藏:0      [点我收藏+]

Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。

摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。

MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示。

一 、hashlib加密模块

hash是一种算法(Python3.版本里使用hashlib模块代替了md5模块和sha模块,主要提供 SHA1、SHA224、SHA256、SHA384、SHA512、MD5 算法),该算法接受传入的内容,经过运算得到一串hash值。

hash值的特点:

  1. 只要传入的内容一样,得到的hash值一样,可用于非明文密码传输时密码校验
  2. 不能由hash值返解成内容,即可以保证非明文密码的安全性
  3. 只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的,可以用于对文本的哈希处理

1、普通MD5加密

import hashlib

m = hashlib.md5() # 创建md5对象
b = hello.encode(encoding=utf-8) # 此处必须encode, 或者 b = bytes(str, encoding=‘utf-8‘),作用相同都是encode为bytes,将str默认的unicode转成utf-8.
m.update(b); #该方法只接受bytes类型


print(m.hexdigest())  #将hash中的数据转换成数据,其中只包含十六进制的数字。 5d41402abc4b2a76b9719d911017c592


# 另一种写法:b‘’前缀代表的就是bytes ,对英文加密,才可以使用b‘ ‘前缀,b‘ ‘在python中只能对ASCII字符进行转码。
str_md5 = hashlib.md5(bthis is a md5 test.).hexdigest() 
print(MD5加密后为 : + str_md5)

2、hmac 加盐加密模块

为了防止密码被撞库,我们可以使用python中的另一个hmac 模块,它内部对我们创建key和内容做过某种处理后再加密。

如果要保证hmac模块最终结果一致,必须保证:

  1. hmac.new括号内指定的初始key一样
  2. 无论update多少次,校验的内容累加到一起是一样的内容
import hashlib
import hmac

# 注意hmac模块只接受二进制数据的加密
h1 = hmac.new(bhash, msg=None, digestmod=hashlib.md5)
h1.update(bhello)
h1.update(bworld)
print(h1.hexdigest())  # 905f549c5722b5850d602862c34a763e

h2 = hmac.new(bhash, msg=None, digestmod=hashlib.md5)
h2.update(bhelloworld)
print(h2.hexdigest())  # 905f549c5722b5850d602862c34a763e

h3 = hmac.new(bhashhelloworld, msg=None, digestmod=hashlib.md5)
print(h3.hexdigest())  # a7e524ade8ac5f7f33f3a39a8f63fd25

Python:加密与解密hashlib模块

原文:https://www.cnblogs.com/springsnow/p/12558339.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!