Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作
2017-06-02 10:51
1031 查看
# -*- coding: gb2312 -*- #用户名密码登录系统(MD5加密并存入文件)及对字符串进行凯撒密码加解密操作 #作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ import hashlib def md5(arg):#这是加密函数,将传进来的函数加密 md5_pwd = hashlib.md5(bytes('admin')) md5_pwd.update(bytes(arg)) return md5_pwd.hexdigest()#返回加密的数据 def log(user,pwd):#登录时的函数,由于md5不能反解,因此登陆的时候用正解 with open('pass.txt','r') as f: for line in f: u,p=line.strip().split('|') if u == user and p == md5(pwd):#登录的时候验证用户名以及加密的密码跟之前保存的是否一样 return True def register(user,pwd):#注册的时候把用户名和加密的密码写进文件,保存起来 with open('pass.txt','a') as f: temp = user+'|'+ md5(pwd)+'\n' f.write(temp) def encryption(): #加解密界面 offset=int(input('~~~~~~~~~~~~~~~~~~~~~~~~~~\n' '请输入偏移量:\n' '大于0小于26:偏移量\n' '0:退出登录\n' '~~~~~~~~~~~~~~~~~~~~~~~~~~\n')) if offset in range(1,25): variable=int(input('~~~~~~~~~~~~~~~~~~~~~~~~~~\n' '请选择操作:\n' '1:加密\n' '2:解密\n' '~~~~~~~~~~~~~~~~~~~~~~~~~~\n')) user1=Caesar(offset,variable) user1.choose() elif offset==0: print('谢谢使用,再见!') exit(0) else: print('偏移量超出范围,请重新输入!') class Caesar: # 定义类,名叫Caesar def __init__(self, offset, variable):# 初始化 self.passage = offset self.type = variable def encrypt(self,offset): # 加密 move = (ord(offset)-97+self.passage) % 26+97 # 用ASCII码值来完成移动,ord()将字符转化为对应ASCII码的十进制数 return chr(move) #将ASCII码转化为对应的数值,chr()将一个整数转化为Unicode字符 def decrypt(self,offset): # 解密 move=(ord(offset)-97-self.passage)%26+97 if move < 97: move = move + 26 return chr(move) def choose(self): # 选择 str2='' if self.type==1: # 加密时进入 str1=input("请输入要加密的字符串('xxx'):\n") org=str1 for i in range (len(str1)): # str1为输入的字符串 str1=str1[:i]+self.encrypt(str1[i])+str1[i+1:] for i in range (len(str1)): str2=str2+str1[i] print ('字符串'+org+'加密后为:'+str2) elif self.type==2: # 解密时进入 str1=input("请输入要解密的字符串('xxx'):\n") org=str1 for i in range (len(str1)): str1=str1[:i]+self.decrypt(str1[i])+str1[i+1:] for i in range (len(str1)): str2=str2+str1[i] print ('字符串'+org+'解密后为:'+str2) else: print('选择错误,请重新输入!') class Login: def __init__(self,i): self.i=i def showface(self): if self.i==2: user = input("用户名('xxx'):") pwd =input("密码('xxx'):") register(user,pwd) elif self.i==1: count=1 while count<=3: user = user = input("用户名('xxx'):") pwd =input("密码('xxx'):") r=log(user,pwd)#验证用户名和密码 if r==True: print('登录成功') while True: encryption() else: print('登录失败') count +=1 if count == 4: print("密码输入次数过多,账户将被锁定!") exit(0) else: print("还有%d次尝试机会!"%(4-count)) elif self.i==0: print('谢谢使用,再见!') exit(0) else: print('输入错误,请重新输入!') if __name__=='__main__': # 测试程序 while True: i=int(input('~~~~~~~~趣味密码学~~~~~~~\n' '0.退出\n' '1.登录\n' '2.注册\n' '~~~~~~~~~~~~~~~~~~~~~~~~\n' '请输入您的选择:')) pass1=Login(i) pass1.showface()
结果:
C:\Python27\python.exe D:/Mypython/Myexercise/_kaisa_passage.py ~~~~~~~~趣味密码学~~~~~~~ 0.退出 1.登录 2.注册 ~~~~~~~~~~~~~~~~~~~~~~~~ 请输入您的选择:2 用户名('xxx'):'wrr' 密码('xxx'):'123' ~~~~~~~~趣味密码学~~~~~~~ 0.退出 1.登录 2.注册 ~~~~~~~~~~~~~~~~~~~~~~~~ 请输入您的选择:2 用户名('xxx'):'123' 密码('xxx'):'123456' ~~~~~~~~趣味密码学~~~~~~~ 0.退出 1.登录 2.注册 ~~~~~~~~~~~~~~~~~~~~~~~~ 请输入您的选择:1 用户名('xxx'):'123' 密码('xxx'):'123456' 登录成功 ~~~~~~~~~~~~~~~~~~~~~~~~~~ 请输入偏移量: 大于0小于26:偏移量 0:退出登录 ~~~~~~~~~~~~~~~~~~~~~~~~~~ 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~ 请选择操作: 1:加密 2:解密 ~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 请输入要加密的字符串('xxx'): 'qwert' 字符串qwert加密后为:tzhuw ~~~~~~~~~~~~~~~~~~~~~~~~~~ 请输入偏移量: 大于0小于26:偏移量 0:退出登录 ~~~~~~~~~~~~~~~~~~~~~~~~~~ 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~ 请选择操作: 1:加密 2:解密 ~~~~~~~~~~~~~~~~~~~~~~~~~~ 2 请输入要解密的字符串('xxx'): 'tzhuw' 字符串tzhuw解密后为:qwert ~~~~~~~~~~~~~~~~~~~~~~~~~~ 请输入偏移量: 大于0小于26:偏移量 0:退出登录 ~~~~~~~~~~~~~~~~~~~~~~~~~~ 0 谢谢使用,再见! Process finished with exit code 0
或者:
C:\Python27\python.exe D:/Mypython/Myexercise/_kaisa_passage.py ~~~~~~~~趣味密码学~~~~~~~ 0.退出 1.登录 2.注册 ~~~~~~~~~~~~~~~~~~~~~~~~ 请输入您的选择:1 用户名('xxx'):'wrr' 密码('xxx'):'123' 登录成功 ~~~~~~~~~~~~~~~~~~~~~~~~~~ 请输入偏移量: 大于0小于26:偏移量 0:退出登录 ~~~~~~~~~~~~~~~~~~~~~~~~~~ 0 谢谢使用,再见! Process finished with exit code 0
或者:
C:\Python27\python.exe D:/Mypython/Myexercise/_kaisa_passage.py ~~~~~~~~趣味密码学~~~~~~~ 0.退出 1.登录 2.注册 ~~~~~~~~~~~~~~~~~~~~~~~~ 请输入您的选择:1 用户名('xxx'):'123' 密码('xxx'):'456' 登录失败 还有2次尝试机会! 用户名('xxx'):'456' 密码('xxx'):'485' 登录失败 还有1次尝试机会! 用户名('xxx'):'425' 密码('xxx'):'425552' 登录失败 密码输入次数过多,账户将被锁定! Process finished with exit code 0
pass.txt文件保存结果如下:
相关文章推荐
- Python3练习-输入用户名输入三次错误即锁定该用户,提示登录失败
- ubuntu输入了正确的用户名密码但是无法登录(环境变量设置错误所以不能登录系统)
- python实现简单的用户密码登录控制(输入三次就锁定用户)
- WinXP系统设置锁定无效登录当密码输入多次错误便会锁定账户
- 编写登录接口,输入用户名密码,认证成功后显示欢迎界面,输错三次后锁定(1.超过三次直接锁定待实现 2.锁定后只能尝试一次)
- python实现简单的用户密码登录控制(输入三次就锁定用户)
- WINxp系统不输入用户名和密码直接登录
- python三次输入错误验证登录
- 完成系统登录程序,从命令行输入用户名和密码,如果没有输入用户名和密码,则提示输入用户名和密码;如果输入了用户名但是没有输入密码,则提示用户输入密码,然后判断用户名是否是mldn,密码是否是hello,
- python3.0 模拟用户登录,三次错误锁定的实例
- selenium+python针对登录功能的用户名,密码和断言组合进行的测试
- 编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误,可以重新输入,最多输入三次。三次均错,则提示退出程序
- 一开机未通过输入密码登录,就出现用户名或密码错误??
- java web 开发 如何实现 输入密码三次错误 后 锁定账户功能。
- python密码错误三次锁定(实例讲解)
- 模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成功,如果三次均输入错误,则退出程序)
- ssh 登录输入用户名和密码错误次数太多,怎么办?
- python 3.0 模拟用户登录功能并实现三次错误锁定
- 完成系统登录程序,从命令行输入用户名和密码,如果没有输入用户名和密码,则提示输入用户名和密码;如果输入了用户名但是没有输入密码,则提示用户输入密码,然后判断用户名是否是mldn,密码是否是hello,
- 完成系统登录程序,从命令行输入用户名和密码,如果没有输入用户名和密码,则提示输入用户名和密码;如果输入了用户名但是没有输入密码,则提示用户输入密码,然后判断用户名是否是mldn,密码是否是hello,