#-*- coding: gb2312 -*-#用户名密码登录系统(MD5加密并存入文件)及对字符串进行凯撒密码加解密操作#作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/

importhashlibdef 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 inf:

u,p=line.strip().split('|')if u == user and p == md5(pwd):#登录的时候验证用户名以及加密的密码跟之前保存的是否一样

returnTruedef register(user,pwd):#注册的时候把用户名和加密的密码写进文件,保存起来

with open('pass.txt','a') as f:

temp= user+'|'+ md5(pwd)+''f.write(temp)def encryption(): #加解密界面

offset=int(input('~~~~~~~~~~~~~~~~~~~~~~~~~~'

'请输入偏移量:'

'大于0小于26:偏移量'

'0:退出登录'

'~~~~~~~~~~~~~~~~~~~~~~~~~~'))if offset in range(1,25):

variable=int(input('~~~~~~~~~~~~~~~~~~~~~~~~~~'

'请选择操作:'

'1:加密'

'2:解密'

'~~~~~~~~~~~~~~~~~~~~~~~~~~'))

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=variabledef 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

returnchr(move)def choose(self): #选择

str2=''

if self.type==1: #加密时进入

str1=input("请输入要加密的字符串('xxx'):")

org=str1for i in range (len(str1)): #str1为输入的字符串

str1=str1[:i]+self.encrypt(str1[i])+str1[i+1:]for i inrange (len(str1)):

str2=str2+str1[i]print ('字符串'+org+'加密后为:'+str2)elif self.type==2: #解密时进入

str1=input("请输入要解密的字符串('xxx'):")

org=str1for i inrange (len(str1)):

str1=str1[:i]+self.decrypt(str1[i])+str1[i+1:]for i inrange (len(str1)):

str2=str2+str1[i]print ('字符串'+org+'解密后为:'+str2)else:print('选择错误,请重新输入!')classLogin:def __init__(self,i):

self.i=idefshowface(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('登录成功')whileTrue:

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__': #测试程序

whileTrue:

i=int(input('~~~~~~~~趣味密码学~~~~~~~'

'0.退出'

'1.登录'

'2.注册'

'~~~~~~~~~~~~~~~~~~~~~~~~'

'请输入您的选择:'))

pass1=Login(i)

pass1.showface()

python凯撒密码加密写入文件_Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作...相关推荐

  1. 火山安卓RSA加解密操作

    本源码转载自利快云https://www.lkuaiy.com/ 火山安卓RSA文本加解密操作   一.模块配置 1.首先右键项目配置模块 2.找到数据处理支持模块,勾选并确定即可. 二.RSA秘钥对 ...

  2. 如何利用python在一个文档里写入长须_Python语法入门—文件处理

    1.什么是文件 文件是操作系统提供给用户/应用程序操作硬盘的一种虚拟的概念/接口 ==计算机三大层次结构== 用户/应用程序(open()) 操作系统(文件) 计算机硬件(硬盘) 2.为何要用文件 = ...

  3. python账号密码一一对应_python模拟用户登录系统,如何两个用户输入各自的密码才能登入?...

    展开全部 #我可以把我自己2113的成果送你,你来研究5261研究 import json #用来存储数据4102的模块 import os #用来进行文件操作1653 import sys #获取脚 ...

  4. java实现对文件加解密操作

    源文件: 加密后的文件: 解密后的文件: package com.gblfy.test;import java.io.*;/*** java 实现对文件加解密的方法** @author gblfy* ...

  5. python内置函数打开文件_Python内置函数用来打开或创建文件并返回文件对象。

    误的排列关于坐姿坐位姿势良好的描要的常重述错是:内置时的是非,盘承坐姿椎间的因为常大时的受非. 函数或创工作高精轴上电动电动机上机主台上伺服伺服. 打开对象膏B可与之同连D.淡豆豉用的.黄.黄黄柏是A ...

  6. 集成mybatis对数据更新和查询加解密操作

    //原本地址:原文 目录结构: 1. 注解 package com.ddmc.risk.annoation;import com.ddmc.risk.service.impl.DefaultDesen ...

  7. python登录系统的实现方法_python实现用户登录系统

    本文实例为大家分享了用户登录系统python实现代码,供大家参考,具体内容如下 注意事项: 1.使用python3执行程序.按提示输入1或2,登录或退出程序 2.输入用户名后,如果用户名被锁定及无效用 ...

  8. python小型登录系统_python实现用户登录系统

    本文实例为大家分享了用户登录系统python实现代码,供大家参考,具体内容如下 注意事项: 1.使用python3执行程序.按提示输入1或2,登录或退出程序 2.输入用户名后,如果用户名被锁定及无效用 ...

  9. python做邮箱系统_python实现用户登录系统

    本文实例为大家分享了用户登录系统python实现代码,供大家参考,具体内容如下 注意事项: 1.使用python3执行程序.按提示输入1或2,登录或退出程序 2.输入用户名后,如果用户名被锁定及无效用 ...

最新文章

  1. 桐城中学2021高考成绩查询,桐城中学2019高考成绩喜报、一本二本上线情况
  2. 为啥总让我“先去博客园其他网站逛逛”?
  3. ddr传输 pl ps_Vitis ZYNQ开发秘籍 PS 端任意控制 VGA 显示画面最终实现
  4. 计算机术语中bit表示,bit的用法
  5. C#和Java详细描述
  6. 计算机科普小知识——Win7系统32位与64位的区别,该如何选择?
  7. TFS2010配置SQLServer2008R2 tf255049错误
  8. SSH连接virtualbox中的虚拟机
  9. C#LeetCode刷题之#404-左叶子之和​​​​​​​​​​​​​​(Sum of Left Leaves)
  10. pythonmysql部署_详解centos7+django+python3+mysql+阿里云部署项目全流程
  11. java中的equals和hashCode
  12. 【二维码识别】基于matlab GUI 灰度+二值化+校正QR二维码识别与生成【含Matlab源码 600期】
  13. Photoshop DDS转化插件的一些问题
  14. 上采样、下采样到底是什么?
  15. word2vec模型。该模型是用于学习文字的向量表示,称之为“word embedding”
  16. 通往互联网架构师之路---全栈工程师
  17. 接入微信SDK 获取用户定位
  18. Java | MySQL Emoji表情写入数据库时报错问题解决,Incorrect string value: ‘\xF0\x9F\x98\x84\xF0\x9F...‘ for column
  19. 计算机科学给稿费多少,科学网—千字千元的稿费标准高吗? - 籍利平的博文
  20. photoshopcs6破解补丁用来干嘛的

热门文章

  1. iOS经常使用加密方式(MD5,AES,BASE64)与网络数据安全
  2. 解决 wcf HTTP 无法注册 另一应用程序正在使用 TCP 端口 80
  3. git 移动分支指针_git 分支( branch ) 的基本使用
  4. Matlab结构第三版,MATLAB程序设计(原书第3版)
  5. 【控制】《多无人机协同控制技术》周伟老师-第9章-单无人机目标跟踪飞行控制策略
  6. [工具]更新音乐下载软件工具音乐下载网站
  7. arduino Pro Mini和nano​替代芯片LGT8F328P,上传报错Cannot run program解决方法
  8. 【体验】感谢朋友雪中送炭寄来的便携示波器,便携示波器开箱体验
  9. 16位cpu 移位处理
  10. hexo 博客支持PWA和压缩博文