码迷,mamicode.com
首页 > 编程语言 > 详细

python MD5() 加密

时间:2019-12-12 17:56:30      阅读:705      评论:0      收藏:0      [点我收藏+]

标签:函数   learning   obj   就是   生成   false   pre   onclick   english   

摘要算法

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

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

 

摘要算法就是通过摘要函数 f() 对任意长度的数据 date计算出固定长度的摘要 digest,目的是为了发现原始数据是否被人篡改过。

我们以常见的摘要算法MD5为例,计算出一个字符串的MD5值:

技术图片
1 import hashlib
2 
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 hashlib
2 
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  hashlib
2 
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             return
18         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 True
29 
30 register()
31 result = login()
32 if result:
33     print(登陆成功!)
34 else:
35     print(登陆失败!)
模拟用户注册、登录

 

 

python MD5() 加密

标签:函数   learning   obj   就是   生成   false   pre   onclick   english   

原文地址:https://www.cnblogs.com/vaelovejj/p/12030690.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!