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()
 

最新文章

  1. c语言快速入门3
  2. Oozie分布式任务的工作流——脚本篇
  3. 安装FreeMind
  4. XE5 Android 开发数据访问server端
  5. instanceof 和 构造函数
  6. SSL / TSL 传输加密算法 初解读
  7. Webpack4教程:第一部分,入口、输入和ES6模块
  8. LabVIEW与Arduino的连接
  9. PAT基础6-4
  10. 《JAVA程序设计》第四周总结
  11. Elemet-技巧
  12. Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem D (Codeforces 831D) - 贪心 - 二分答案 - 动态规划
  13. Docker使用札记 - 使用中遇到的问题总结
  14. Java静态方法块、非静态方法块、构造方法、静态方法执行顺序
  15. Ubuntu安装MediaInfo
  16. Oracle下Delete语句
  17. zepto 的 css 方法 -- 待续
  18. Prometheus 简介
  19. 【BZOJ 1815】【SHOI 2006】color 有色图
  20. 使用githubs托管代码

热门文章

  1. FileUpload框架实现文件上传(多个文件)和下载
  2. GOPL第三章练习题3.3 3.4代码
  3. webpack——概念的引入
  4. Question20171231 聊聊为什么32bit只能支持4GB内存
  5. 分布式id生成
  6. lua浮点数取整
  7. jdbc学习笔记03
  8. Configuration Alias
  9. JSP/Servlet开发——第六章 JSP开发业务应用
  10. 仿制用友U8界面