用户:
yh12i31查看:0 回复:1 评论:0 创建时间:2022-01-29T22:12:29
【作品展示】

【作品介绍】
此作品通过哈希函数加盐的方法加密了密码作品是欢迎借鉴和模仿的噢~
【作品源代码】
"""
作者:sanjiiiii
bilibili喵1245380903
此作品欢迎借鉴和模仿噢!
"""
"""
此作品通过哈希函数加盐的方法加密了密码,
不信去看看data.txt文件
"""
print("\n如果你觉得哪里写的不好,欢迎批评\n还有此作品如果没有保存,可能会报错哦!\n")
import hashlib
salt = "aoe9srsu92j80"
user = ""
password = ""
# 省略获取用户名和密码的步骤
def get(user_tip, password_tip):
global user, password
user = input(user_tip + ":")
password = input(password_tip + ":")
# 省略哈希时的步骤
def hash(string):
obj = hashlib.md5()
obj.update((string).encode("utf-8"))
return obj.hexdigest()
# 导入到本地数据(就一个普普通通的txt)
def in_password():
get("你想取什么名字呢", "想一个密码吧")
# 对密码机密
hash_password = hash(password) + hash(salt)
# 导入加密后的密码
with open("data.txt", "a", encoding="utf-8") as f:
f.write(f"{user}:{hash_password}\n")
print("成功导入!")
def out_password():
get("你的用户名是什么呢", "输入你的密码吧")
# 获取用户列表和密码列表
users_list = []
password_list = []
# utf-8这里作者踩了坑
with open("data.txt", "r", encoding="utf-8") as f:
data = f.read()
data_list = data.split("\n")
for i in data_list:
line_data = i.split(":")
try:
users_list.append(line_data[0])
password_list.append(line_data[1])
except:
break
for i in range(len(users_list)-1):
if user == users_list[i]:
now_password = password_list[i]
hash_salt = hash(salt)
now_password.replace(now_password[len(now_password)-len(salt)-1:], "")
now_password = now_password[:len(now_password)-len(hash(password))]
if hash(password) == now_password:
print("验证成功!(tips:作者做到这里非常😊😊😊)")
# 这里的第一层 以追加模式创建txt文件 ,避免后面的读取发生报错
with open("data.txt", "a", encoding="utf-8") as f1:
with open("data.txt", "r", encoding="utf-8") as f2:
# 如果没有数据,则直接进行注册操作
if f2.read() == "":
print("当前没有用户注册,所以让你当第一个用户啦!")
in_password()
print("在运行一次试试~~")
else:
# 这里的 LOR 变量是“login or register”的缩写(因为不知道怎么写变量名所以就这样写)
LOR = input("要登陆还是注册? ")
if LOR == "登录":
out_password()
elif LOR == "注册":
in_password()
print("在运行一次就可以登录啦~~")
else:
print("所以你输了个啥?")
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn