Python简要标准库(5)
hashlib
Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。
基本的生成MD密匙的函数
import hashlib md5 = hashlib.md5()
md5.update('This is my password'.encode('utf-8'))
print(md5.hexdigest())
aaarticlea/png;base64,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" alt="" />
若是把password改为了password2
aaarticlea/png;base64,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" alt="" />
所得到的MD5就完全不一样了
这体现了MD5的单向加密功能的强大
若要生成SHA1密匙的话,只需要将功能函数替换即可
sha1 = hashlib.sha1()
根据用户输入的登录名和口令模拟用户注册,计算更安全的MD5
使用了shelve模块 存储上次的用户数据信息
import hashlib
import shelve #注册账号到数据库中 之前检测是否有重复
def Register(db,username,password):
if username in db.keys():
print ('find the same username : ')
return #生成MD5密匙
md5 = hashlib.md5()
md5.update((username+password+'something').encode('utf-8'))
md5_password = md5.hexdigest() #创建记录
user = {}
user['password'] = md5_password #保存记录
db[username] = user #交互显示
print ('Registered successfully!')
print ('username : ',username)
print ('password : ',password) #显示数据库的信息
def showDataBase (db):
print ('------This is database show------')
for x in db.keys():
d = db[x]
print ('username : ',x)
for key,value in d.items():
print (key,':',value)
print ('------over------')
#登录数据库
def SignIn(db,username,password):
md5 = hashlib.md5()
md5.update((username+password+'something').encode('utf-8'))
md5_password = md5.hexdigest()
#检测是否有用户账号
if username in db.keys():
if db[username]['password'] == md5_password:
print ('welcome',username)
else:
print ('password is error')
#不存在用户账号信息
else:
print ('no user call ',username) #获取用户输入
def enter_command():
cmd = input('Enter command (r,s,q,show) : ')
cmd = cmd.strip().lower()
return cmd def get_user_input():
username = input('pls input your username : ')
password = input ('pls input your password : ')
L = [username,password]
return L
def main():
database = shelve.open('userData.dat') try:
while True:
cmd = enter_command()
if cmd == 'r':
user_input = get_user_input()
Register(database,user_input[0],user_input[1])
elif cmd == 's':
user_input = get_user_input()
SignIn(database,user_input[0],user_input[1])
elif cmd == 'show':
showDataBase(database)
elif cmd == 'q':
print ('quit by user')
break finally:
database.close() if (__name__) == '__main__':
main()
最新文章
- c语言快速入门3
- Oozie分布式任务的工作流——脚本篇
- 安装FreeMind
- XE5 Android 开发数据访问server端
- instanceof 和 构造函数
- SSL / TSL 传输加密算法 初解读
- Webpack4教程:第一部分,入口、输入和ES6模块
- LabVIEW与Arduino的连接
- PAT基础6-4
- 《JAVA程序设计》第四周总结
- Elemet-技巧
- Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem D (Codeforces 831D) - 贪心 - 二分答案 - 动态规划
- Docker使用札记 - 使用中遇到的问题总结
- Java静态方法块、非静态方法块、构造方法、静态方法执行顺序
- Ubuntu安装MediaInfo
- Oracle下Delete语句
- zepto 的 css 方法 -- 待续
- Prometheus 简介
- 【BZOJ 1815】【SHOI 2006】color 有色图
- 使用githubs托管代码