散列算法 MD5 的应用

实验名称

  散列算法 MD5 的应用

、实验目的及要求

    通过编程实现 MD5 算法应用于系统登录口令的安全认证,加深对 MD5 算法及其应用的

了解

、实验环境

    

   Windows10,  Pycharm

四、实验设计

内容要求:

  1. 实验步骤

设计一个模拟的系统用户安全登录的界面程序,采用 MD5 算法实现用户登录口令的安全认证。程序具有注册和登录两个功能,用户注册功能提示用户输入用户名和口令,实现用户名和用户口令的 MD5 散列值的一一对应。用户登录功能,提示用户输入用户名和口令,用户输入正确口令后,显示其 MD5 散列值,并提示用户合法;否则给出非法用户提示。

2、调试过程及实验结果

 注册:

登录:

密码输入错误登录:

3、总结

本次实验主要学习了散列算法MD5的应用,通过实验了解了MD5算法的原理和实现过程,掌握了MD5算法的使用方法和注意事项。
在实验中,我们使用了Python编程语言来实现MD5算法,并对字符串进行加密和解密操作。通过实验,我们发现MD5算法具有以下特点:
MD5算法是一种单向散列算法,可以将任意长度的数据转换成固定长度的摘要信息。
MD5算法具有不可逆性,即无法通过摘要信息反推出原始数据。
MD5算法具有高度的散列性,即对于不同的输入数据,其生成的摘要信息是不同的。
MD5算法具有较高的安全性,但是随着计算机技术的发展,其安全性也在逐渐降低。
总之,本次实验让我们更深入地了解了散列算法MD5的应用,对信息安全有了更深刻的认识。同时,也提醒我们在实际应用中要注意数据的安全性,采取合适的加密措施来保护数据的安全。

import hashlib
import tkinter as tk

# 定义一个字典用于存储注册的用户信息
users = {}

# 注册用户
def register():
    username = username_entry.get()
    password = password_entry.get()
    # 对密码进行 MD5 散列
    password_md5 = hashlib.md5(password.encode()).hexdigest()
    users[username] = password_md5
    result_label.config(fg="green", text="注册成功!")

# 用户登录
def login():
    username = username_entry.get()
    password = password_entry.get()
    # 对密码进行 MD5 散列
    password_md5 = hashlib.md5(password.encode()).hexdigest()
    if username in users and users[username] == password_md5:
        result_label.config(fg="green", text="登录成功!")
        password_md5_label.config(text="MD5 散列值:" + password_md5)
    else:
        result_label.config(fg="red", text="用户名或密码错误!")
        password_md5_label.config(text="")

# 创建主窗口
root = tk.Tk()
root.title("用户登录")

# 创建用户名标签和输入框
username_label = tk.Label(root, text="用户名:")
username_label.grid(row=0, column=0)
username_entry = tk.Entry(root)
username_entry.grid(row=0, column=1)

# 创建密码标签和输入框
password_label = tk.Label(root, text="密码:")
password_label.grid(row=1, column=0)
password_entry = tk.Entry(root, show="*")
password_entry.grid(row=1, column=1)

# 创建注册按钮和登录按钮
register_button = tk.Button(root, text="注册", command=register)
register_button.grid(row=2, column=0)
login_button = tk.Button(root, text="登录", command=login)
login_button.grid(row=2, column=1)

# 创建结果标签和密码 MD5 散列值标签
result_label = tk.Label(root, text="")
result_label.grid(row=3, column=0, columnspan=2)
password_md5_label = tk.Label(root, text="")
password_md5_label.grid(row=4, column=0, columnspan=2)

# 运行主窗口
root.mainloop()

猜你喜欢

转载自blog.csdn.net/qq_62760217/article/details/130457977
今日推荐