这篇是用Tkinter做的注册界面的案例,代码里有许多验证的判断,还没有完全写完,主要实现密码加密写入字典,这里用到了之前的一篇MD5加密的方法点击查看,点注册后密码通过哈希MD5加密写入文本文件,可以看到字典中的密码是加密的,可以确保用户信息的安全
待完善的不足:用相同的用户名注册时,会记录最后一条注册的用户名和密码,这也是字典的特性,键的唯一性,但值可以任意。
解决办法:注册时遍历字典中的键,如果存在相同则不允许注册

上面画红线的就是密码"abc12345"的MD5值

上图是写入后的用户名和密码,因为需要转化为字典键值对的形式,所以中间用制表符Tab键分隔开,再用split方法分隔成键和值即可

上图是点击读出账户信息后以字典形式打印文本文件中的内容

from tkinter import *
from tkinter import messagebox
import hashlibroot = Tk()
root.title("注册窗口演示")
root.geometry("400x250")
root.resizable(0, 0)
f1 = Frame(root)
f1.pack()
l1 = Label(f1, text="用户名").grid(row=0, column=0)
l2 = Label(f1, text="输入密码").grid(row=1, column=0)
l2 = Label(f1, text="再次确认").grid(row=2, column=0)
def change():username.config(bg="white")password.config(bg="white")password_.config(bg="white")return True
username = Entry(f1,validate="key",validatecommand=change)#输入用户名
username.grid(row=0, column=1, pady=20)
password = Entry(f1,validate="key",validatecommand=change)#输入密码
password.grid(row=1, column=1)
password_ = Entry(f1,validate="key",validatecommand=change)#再次确认密码
password_.grid(row=2, column=1)def register():if username.get() == "":username.config(bg="Crimson")messagebox.showerror("提示", "用户名不能为空")elif password.get() != password_.get():password.config(bg="Crimson")password_.config(bg="Crimson")password_.delete(0,END)messagebox.showerror("提示", "两次密码输入不一致")elif password.get() == password_.get():'''这里就是自定义的MD5加密,实例化对象必须写在一个函数里,否则加密后的同样字符串每次会出现不一样的情况'''m = hashlib.md5("欢乐海岸".encode("utf-8"))m.update(password.get().encode("utf-8"))f = open("D:\\账户信息.txt", mode="a", encoding="utf-8")f.write(username.get() + "\t" + m.hexdigest() + "\n")print(m.hexdigest())f.close()messagebox.showinfo("提示", "注册成功")
Button(f1, text="注册", width=10, command=register).grid(row=3, column=0, sticky=W, pady=5)
Button(f1, text="退出", width=10, command=root.quit).grid(row=3, column=1, sticky=E, pady=5)def readinfo():f = open("D:\\账户信息.txt", mode="r", encoding="utf-8")information = f.readlines()D = {} #创建空字典,放用户名和密码for i in range(len(information)):D[information[i].split("\t")[0]] = information[i].split("\t")[1][0:-1]  #以tab键分隔,去掉末尾的换行符\n,用户名和密码加入字典中print(D)f.close()
Button(f1, text="读出账户信息", width=10, command=readinfo).grid(row=4, column=1, sticky=E, pady=5)
root.mainloop()

Tkinter用户注册后密码通过MD5加密写入文本文件相关推荐

  1. C#对用户密码使用MD5加密与解密

    C#中常涉及到对用户密码的加密于解密的算法,其中使用MD5加密是最常见的的实现方式.本文总结了通用的算法并结合了自己的一点小经验,分享给大家. 一.使用16位.32位.64位MD5方法对用户名加密 1 ...

  2. 对用户密码进行md5加密的代码实现

    对密码进行md5加密,然后插入到数据库代码实现:

  3. [C语言]给账号密码进行MD5加密

    给账号密码进行MD5加密 源码解析 源码下载 源码解析 //md5加密用户密码 UtlMd5_t ctx; unsigned char serverDigest[16]; utl_md5_init(& ...

  4. MySQL数据库id主键或密码使用MD5加密

    MD5原理: MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值,每 ...

  5. Vue 登录密码验证 MD5加密

    一.特点 1.压缩性:任意长度的数据,算出的MD5值长度都是固定的. 2.容易计算:从原数据计算出MD5值很容易. 3.抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别 ...

  6. java md密码加密_JavaSE_对密码进行MD5加密

    package me.falcon.utils; import java.security.MessageDigest; import java.security.NoSuchAlgorithmExc ...

  7. 前端输入框内密码用MD5加密处理

    JS-MD5官网:  https://www.npmjs.com/package/js-md5 MD5在线解密/加密:http://pmd5.com/?action=getpwd# md5.js下载: ...

  8. php mysql md5加密_php 用户密码MD5加密存入数据库问题//

    比如说用户注册后,后台给用户密码MD5加密了在存入数据库,用户在登入的时候输入的密码要与数据库保存的密码对比.我想问的是,用户登入时,后台要把密码用MD5加密后才能与数据库的密码比较吗? 对,确实如此 ...

  9. 使用MD5加密数据库中的用户密码介绍

    使用MD5加密数据库中的用户密码介绍 ●前言 我们知道,现在网络上一般的网站,稍微完善一点的,往往都需要用户先注册,提供诸如电子邮件.账号.密码等信息以后,成为网站栏目的注册用户,才可以享受网站一些特 ...

  10. SpringBoot+Spring Security验证密码MD5加密

    本文目的:使用springBoot+springSecurity 用户授权验证权限功能,对用户的登录密码使用MD5 加密. 本文基于我的博客:springboot+mybatis+SpringSecu ...

最新文章

  1. 95行代码实现最大熵模型训练
  2. 简单的 基于seajs一个base基础库
  3. js input复选框选中父级同时子级也选中_突破百度JS反爬获取百度文库数据下载...
  4. 微信验证服务器是怎么回事,微信服务器认证为什么需要这么多参数?
  5. html捉虫游戏,幼儿园体育游戏《小鸡捉虫》教案(精选4篇)
  6. WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
  7. js获取当前月的第一天和最后一天
  8. Google浏览器一开启就提示“请停用以开发者模式运行的扩展程序“解决方案
  9. Android 安全架构及权限控制机制剖析
  10. hdfs读写流程_必须掌握的分布式文件存储系统—HDFS
  11. 图的最短路径-----------Dijkstra算法详解(TjuOj2870_The Kth City)
  12. PHP数据库操作:从MySQL原生API到PDO
  13. 如何解决网站可能存在webshell网页木马,阿里云网站木马后门文件提醒
  14. 关于电商行业网络安全解决方案
  15. 【转】RTF格式分析
  16. 声音以模拟信号的形式存储在计算机中,08计算机1-2班《计算机基础》自学资料(5)...
  17. 基于UWB的室内SDS_TWR测距算法优化和定位算法融合的研究
  18. 【中科三方】高防DNS如何实现对DDoS攻击的流量清洗?
  19. @天涯 njsuixin “英语最好不要报班,花钱多还学不到东西。”——这个满适合我的!
  20. Three.js实现的网站页面金字塔模型显示

热门文章

  1. 电商项目的app学习笔记(二)---创建登陆界面
  2. java实践体会,java实践心得体会范文3篇
  3. 计算机术语多态意思,计算机外文翻译测试多态的关系的准则.doc
  4. 实木地板被机器人弄成坑_射阳县羽毛球木地板走在行业前端
  5. php7使用什么缓存,PHP7 opcache缓存清理问题
  6. wcf 双向 java_我的WCF之旅 (11): 再谈WCF的双向通讯-基于Http的双向通讯 V.S. 基于TCP的双向通讯...
  7. VsCode+PicGO+腾讯云实现快速上传markdown图床
  8. 租用服务器多开虚拟机,服务器可以多开虚拟机
  9. ProGuard编译与使用
  10. 编程语言的动态性(Dart和OC对比)