Python学习笔记 - ASCII简单加密文件
使用ASCII加密文件,显然不是一种好方式,因为ASCII容易被破解。但是,ASCII无疑是一种方便的加密方式,本文将简述使用ASCII加密文件。
简单说一下ASCII码与字符的转换。
使用ord
获取一个字符的ASCII码:
ord('A') # 65
使用chr
获取一个ASCII码所对应的字符:
chr(67) # 'C'
打开文件:
f = open('Text.txt', 'r') # 打开文件
text = f.read() # 读取文件
f.close() # 关闭文件
加密文本:
_list = [] # 存储ASCII码
for word in list(text): # 逐个读取字符
_list.append(ord(word)) # 添加至列表
获取另存为文件路径。
方法1:使用tkinter
模块中的filedialog
模块:
import tkinter # 导入tkinter模块
import tkinter.filedialog as log # 导入文件选择模块
import tkinter.messagebox as msg # 导入消息框模块
root = tkinter.Tk() # 建立窗口
root.withdraw() # 隐藏窗口
path = log.asksaveasname() # 建立文件选择窗口
if path = '': # 如果点击右上角“X”取消选择:
msg.showinfo(title='提示', message='你已取消选择!') # 提示用户
方法2:使用win32ui
模块。由于本文的重点不在这里,因此不再赘述。
写入内容:
try:
f = open(path, 'w') # 打开文件
except PermissionError: # 权限问题
msg.showerror(title='错误', message='权限被拒绝!')
else:
f.write(' '.join(_list)) # 写入内容
f.close()
提高保密性的ASCII加密: 修改进制。
_list = [] # 初始化密文列表
for word in list(text): # 循环分析每个字符
_ascii = ord(word) # 换算为ASCII码(10进制)
s = bin(_ascii) # 转换为2进制
# s = hex(_ascii) 转换为16进制,8进制类推
_list.append(s) # 添加至列表
解密纯粹的ASCII密文(即未修改进制):
f = open('2.txt', 'r') # 打开密文文件,2.txt为密文文件路径
text = f.read() # 读取文件
f.close()
_list = [] # 初始化明文列表
for number in list(text):
_list.append(chr(int(number))) # 转换为字符
# 注意文件的read方法总是返回str,因此在chr前必须先转换为int
path = '1.txt' # path为明文文件保存路径,可参见上文文件路径选取
f = open(path, 'w') # 打开明文文件
f.write(''.join(_list)) # 写入内容
f.close()
对于2进制密文,上述代码中:
_list.append(chr(int(number)))
可以改为:
_list.append(chr(int(number, 2))) # 2是进制。密文是几进制就填几
编者技术有限,如有不足敬请指教!