python MD5() 加密,,摘要算法python
python MD5() 加密,,摘要算法python
摘要算法
python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。
摘要算法又称哈希算法,散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。
摘要算法就是通过摘要函数f()对任意长度的数据 date计算出固定长度的摘要 digest,目的是为了发现原始数据是否被人篡改过。
我们以常见的摘要算法MD5为例,计算出一个字符串的MD5值:
1 import hashlib2 3 md5 = hashlib.md5()4 md5.update(‘how to user md5 in python hashlib?‘.encode(‘utf-8‘))5 print(md5.hexdigest())计算MD5值
计算结果如下:
4c850bdab2e3c34df385a2a228d2ea04
如果数据量很大,可以分多次调用update(),最后的计算结果都是一样的:
1 import hashlib2 3 md5 = hashlib.md5()4 md5.update(‘how to user md5 in ‘.encode(‘utf-8‘))5 md5.update(‘python hashlib?‘.encode(‘utf-8‘))6 print(md5.hexdigest())分多次计算MD5值
计算结果:
4c850bdab2e3c34df385a2a228d2ea04
MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示。
另一种常见的摘要算法是SHA1,调用SHA1和调用MD5完全类似:
1 import hashlib2 3 sha1 = hashlib.sha1()4 sha1.update(‘how to learning english?‘.encode(‘utf-8‘))5 print(sha1.hexdigest())计算sha1值
计算结果如下:
983b7e0be6b6d65fabf86149183c428da685d4a5
SHA1的结果是160 bit字节,通常用一个40位的16进制字符串表示。
由于常用口令的MD5值很容易被计算出来,所以,要确保存储的用户口令不是那些已经被计算出来的常用口令的MD5,这一方法通过对原始口令加一个复杂字符串来实现,俗称“加盐”:
应用:
1 import hashlib #导入模块 2 3 def get_md5(date): 4 obj = hashlib.md5(‘iuqe832643873gh‘.encode(‘utf-8‘)) #加盐iuqe832643873gh 5 obj.update(date.encode(‘utf-8‘)) # date 要加密的数据 6 result = obj.hexdigest() 7 return result 8 val = get_md5(‘123‘) 9 print(val)10 USER_LIST = []11 12 def register():13 print(‘************用户注册************‘)14 while True:15 user = input(‘请输入用户名:‘)16 if user == ‘N‘:17 return18 pwd = input(‘请输入密码:‘)19 temp = {‘username‘: user, ‘password‘: get_md5(pwd)}20 USER_LIST.append(temp)21 22 def login():23 print(‘************用户登陆************‘)24 user = input(‘请输入用户名:‘)25 pwd = input(‘请输入密码‘)26 for item in USER_LIST:27 if item[‘username‘] == user and item[‘password‘] == get_md5(pwd):28 return True29 30 register()31 result = login()32 if result:33 print(‘登陆成功!‘)34 else:35 print(‘登陆失败!‘)模拟用户注册、登录
python MD5() 加密
相关内容
- 通过shell脚本查看python版本并比较,,a.pyimport
- Python——div函数的使用及理解,div公式,div函数就是对数
- 铁乐学Python_day12_作业,,1.写函数,返回一个
- python3.7.3升级 with-openssl openssl-1.0.2a,,## 系统环境- R
- Python3之列表与元组,列表和元组的相同点和不同点,列
- C++程序调用python3,编程学python还是C是什么,今天想做一
- python接口自动化测试七:文件上传,python做接口自动化
- python flask 接口,,例子1from fl
- Python的numpy高级应用!,numpy对应Python23,虽然NumPy用户很
- python第四课笔记,Python笔记,请问以下代码会打印多
评论关闭