简单加密口令
我练习做“学生管理系统”时,给系统加了个登录口令。但“明文”存储口令就相当于树枝插门,于是就做了简单的ord(s)加减运算(加密),直接以ord(s)列表存储口令文本 到文件passwords.dat 。 留了“后门”——直接找到口令文本存储文件删除,登录就不向您要口令了。😃😃 敬请大佬和与我一样的初学者,指正错漏和提出宝贵建议。🤝🤝🤝
☆程序调试环境☆
python 3.6.6 安卓版(手机)
知识点:
json.dump(s, open(filename))
技巧:
口令文本用加密的用户键入字符直接比对校验,感觉安全(可能不必要这样子😜)。
代码运行效果
存储的口令文本"Chongqing"
口令解密
lis = [85, 122, 129, 128, 121, 131, 123, 128, 121]
print("\n"*3)
print("存储口令:", lis, "\n")
print('密文口令:"', end="")
for i in lis: print(chr(i), end="")
print('"\n')
print('解码口令:"', end="")
for i in lis: print(chr(i-18), end="")
print('"\n')
run 解密代码
主模块
==My python code==#!/sur/bin/nve python
#-*-coding:utf8;-*-
#qpy:console
#glob.glob(filename) 校验passwords.dat是否存在
import glob
"""
载入自定义通用工具
1. my_time(s) 获取当前系统时间格式字符串
2. show_tip(s) 提示文字打印
3. show_menu(menu_list) 菜单列印
"""
from stars_moon_tools import show_tip, my_time, show_menu
#passwords_read(filename): 密码读取
from passwords_tools import passwords_read
#1. is_menu(flag) 菜单选择
#2. passwords_proving() 密码校验
from students_tools import passwords_proving, is_menu
#main
#口令校验,有设定系统密码,校验。否则忽略
if glob.glob("passwords.dat")!=[]:
passwords_list = passwords_read("passwords.dat")
show_tip("请输入您的 %d 位口令。"%len(passwords_list))
passwords_proving()
while True:
"""学生管理系统主模块"""
print("\n"*3)
#显示当前系统时间
print("﹊"*20)
print(my_time("年月日").center(40))
print("﹊"*20)
print("\n")
s = "欢迎使用【学生管理系统】"
print(s.center(32))
#调用函数列印系统菜单
show_menu(["添加", "查询", "删除", "修改", "密码", "说明"])
s = "请选择菜单:"
flag = input(s.rjust(16)).strip()
#输入正确,调用菜单选择
if flag in ["0", "1", "2", "3", "4", "5", "6"]:
is_menu(flag)
else:
#显示错误提示文字
show_tip("菜单选择错误!请重新选择。")
口令模块
==My python code==def passwords():
def passwords_alter():
"""密码修改"""
#口令校验,有设定系统密码,校验。否则忽略
if glob.glob("passwords.dat")!=[]:
show_tip("请输入旧密码。")
#密码校验
passwords_proving()
show_tip("请输入新密码。")
#密码输入
passwords = passwords_in()
#密码加密
passwords = passwords_encrypt(passwords)
#密码存储
passwords_save(passwords)
#密码修改成功提示
show_tip("系统登录密码,修改成功。")
print("\n"*3)
print("【学生管理系统】".rjust(20))
print("-=密码修改=-".rjust(22))
print("\n"*2)
print("1. 修改 0. 返回".center(36))
print("\n"*2)
flag = input("请您选择:".rjust(16))
if flag in ("1", "0"):
if flag=="1": passwords_alter()
else: show_tip("选择错误!请重试。")
口令处理代码
==My python code==#!/sur/bin/nve python
# coding: utf-8
"""
glob.glob(filename) 校验passwords.dat是否存在
sys.exit() 退出系统
json.dump(s, f) 写入文件
"""
import glob, sys, json
"""
passwords tools 通用工具
1. passwords_read(filename): 密码读取
2. passwords_in() 密码输入
3. passwords_save(passwords) 密码保存
4. passwords_encrypt(passwords) 密码加密
"""
def passwords_read(filename):
if glob.glob(filename)!=[]:
#存储有密码数据,return 读取内容
return json.load(open(filename))
else:
#没有密码设定,return None
return None
def passwords_in():
print("\n"*3)
return input("请输入密码:".rjust(16)).strip()
def passwords_save(passwords):
json.dump(passwords, open("passwords.dat", "w"))
def passwords_encrypt(passwords):
"""口令字符串加密,return 加密后的字条串列表"""
passwords_list = []
for i in passwords:
i_ord = ord(i)+18
passwords_list.append(i_ord)
return passwords_list
with open("passwords.dat", "w") as f:
#将json密码字符串,写入文件
json.dump(passwords, f)