Python简要标准库(4)

hashlib



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

基本的生成MD密匙的函数

1 import hashlib
2
3 md5 = hashlib.md5()
4 md5.update(‘This is my password‘.encode(‘utf-8‘))
5 print(md5.hexdigest())

若是把password改为了password2

所得到的MD5就完全不一样了

这体现了MD5的单向加密功能的强大

若要生成SHA1密匙的话,只需要将功能函数替换即可

 1 sha1 = hashlib.sha1() 

根据用户输入的登录名和口令模拟用户注册,计算更安全的MD5  使用了shelve模块 存储上次的用户数据信息



 
 1 import hashlib
 2 import shelve
 3
 4 #注册账号到数据库中   之前检测是否有重复
 5 def Register(db,username,password):
 6     if username in db.keys():
 7         print (‘find the same username : ‘)
 8         return
 9
10     #生成MD5密匙
11     md5 = hashlib.md5()
12     md5.update((username+password+‘something‘).encode(‘utf-8‘))
13     md5_password = md5.hexdigest()
14
15     #创建记录
16     user = {}
17     user[‘password‘] = md5_password
18
19     #保存记录
20     db[username] = user
21
22     #交互显示
23     print (‘Registered successfully!‘)
24     print (‘username : ‘,username)
25     print (‘password : ‘,password)
26
27
28
29 #显示数据库的信息
30 def showDataBase (db):
31     print (‘------This is database show------‘)
32     for x in db.keys():
33         d = db[x]
34         print (‘username : ‘,x)
35         for key,value in d.items():
36             print (key,‘:‘,value)
37     print (‘------over------‘)
38 #登录数据库
39 def SignIn(db,username,password):
40     md5 = hashlib.md5()
41     md5.update((username+password+‘something‘).encode(‘utf-8‘))
42     md5_password = md5.hexdigest()
43     #检测是否有用户账号
44     if username in db.keys():
45         if db[username][‘password‘] == md5_password:
46             print (‘welcome‘,username)
47         else:
48             print (‘password is error‘)
49     #不存在用户账号信息
50     else:
51         print (‘no user call ‘,username)
52
53 #获取用户输入
54 def enter_command():
55     cmd = input(‘Enter command (r,s,q,show) : ‘)
56     cmd = cmd.strip().lower()
57     return cmd
58
59 def get_user_input():
60     username = input(‘pls input your username : ‘)
61     password = input (‘pls input your password : ‘)
62     L = [username,password]
63     return L
64 def main():
65     database = shelve.open(‘userData.dat‘)
66
67     try:
68         while True:
69             cmd = enter_command()
70             if cmd == ‘r‘:
71                 user_input = get_user_input()
72                 Register(database,user_input[0],user_input[1])
73             elif cmd == ‘s‘:
74                 user_input = get_user_input()
75                 SignIn(database,user_input[0],user_input[1])
76             elif cmd == ‘show‘:
77                 showDataBase(database)
78             elif cmd == ‘q‘:
79                 print (‘quit by user‘)
80                 break
81
82     finally:
83         database.close()
84
85 if (__name__) == ‘__main__‘:
86     main()
 
时间: 2024-10-25 15:42:31

Python简要标准库(4)的相关文章

Python简要标准库(2)

集合 堆 和 双端队列 1.集合 创建集合 1 s = set(range(10)) 和字典一样,集合元素的顺序是随意的,因此不能以元素的顺序作为依据编程 集合支持的运算 1 a = set([1,2,3]) 2 b = set([2,3,4]) 3 other = set([99,98,97]) 4 5 #| 6 c = a | b 7 print (c) 8 print (a.union(b)) 9 10 #& 11 c = a&b 12 print (c) 13 print (a.i

Python简要标准库(1)

sys sys这个模块让你能够访问与Python解释器联系紧密的变量和函数 其中的一些在下表 argv 命令行参数,包括脚本名称 exit([arg]) 退出当前的程序,可选参数为给定的返回值或者错误信息 modules 映射模块名字到载入模块的字典 path 查找模块所在目录的目录名列表 platform 类似sunos或者win32的平台标识符 stdin 标准输入流 stdout 标准输出流 stderr 标准错误流 示例:   os os模块提供了访问多个操作系统服务的功能 enviro

Python简要标准库(3)

shelve 若只需要一个简单的存储方案,那么shelve模块可以满足你大部分的需要,你所需要的只是为它提供文件名.shelve中唯一有趣的函数是open,在调用的时候他会返回一个Shelf对象 注意: 只需要把它当作普通字典(但是键一定要是字符串)来操作 在操作完之后,调用它的close方法 在python2.4之后的版本还有一个解决方案,将open函数的writeback参数设为True.这样所有从shelf读取或者赋值到shelf的数据结构都会保存在内存(缓存)中,而且只有在关闭shelf

一、Python的标准库String

一.Python的标准库String 1.查看武器 a. help(type()) name = "jane"print(help(type(name))) b. capitalize() name = "jane" print(name.capitalize()) 效果:Jane c. center() name = "jane" print(name.center(50, '-')) 效果:-----------------------jan

Python 3标准库 第十四章 应用构建模块

Python 3标准库 The Python3 Standard Library by  Example -----------------------------------------第十四章     应用构建模块-----------------------------14.1  argparse:命令行选项和参数解析----------------------------- argparse模块 14.1.1  建立解析器 14.1.2  定义参数 argparse模块 14.1.3 

python MultiProcessing标准库使用Queue通信的注意要点

今天原本想研究下MultiProcessing标准库下的进程间通信,根据 MultiProcessing官网 给的提示,有两种方法能够来实现进程间的通信,分别是pipe和queue.因为看queue顺眼,就想着拿queue实现,后来,被坑了....于是有了这篇文章.我按照 python标准库之MultiProcessing库的研究 (1) 里面的代码来的,结果就是不断的出错,死过就是不出结果,看看程序: from multiprocessing import Pool, queues impor

找到python官方标准库文档

python中有很多标准库.我们没法记住全部标准库,但是可以在:https://docs.python.org/3/py-modindex.html 中查看标准库的索引 在python的官方文档中,如图所示,为python标准库的文档位置

python之标准库

Python的标准安装包括一组模块,称为标准库. 10.1 模块 >>>emport math >>>math.sin(0) 0.0 10.1.1 模块是程序 任何python程序都可以作为模块导入. #hello.py print "hello,world!" 解释器在哪里寻找模块.(windows) >>>import sys >>>sys.path.append('c:/python') 在unix系统中,不

python linecache标准库基础学习

#python标准库基础之:linecacge:高效读取文本文件#说明与作用"""可以从文件或者导入python模块获取文件,维护一个结果缓存,从而可以更高效地从相同文件读取多行文本;此模块会在python标准库的其他部分中用到,缓存实现将在内存中保存文件内容(解析为单独的行).API通过索引一个列表返回所请求的行.与反复地读取文件并解析文本来查找所需文本行相比,这样可以节省时间,这个方法在查找同一个文件中多行尤其有用 ,比如一个异常."""im