使用python对txt文本文档简单加密
今天想到自已有一些个人数据什么的常常会存在服务器上,或者邮件中,或者网盘上。因为不想因为帐号被盗,这些个人数据会轻易就被别人看到,想对文件进行加密,想到了使用一个密钥与文档中的数据进行异或运算,在解密的时候再使用同样的密钥与数据再进行一次异或运算就可对数据进行解密,所以这里想到使用语法最简单的python来作这个事,也没有想过用c语言,因为C语言如果给别人用,在不同的并台上还要再编译后再能用。
先上源码:
#-*- coding: utf-8 -*-
#加密测试
import
import
codepw = 'testpassword'
#获取脚本路径
def
0]
path,_file = os.path.split(pathx)
if cmp(path,'') == 0:
0]
#判断为脚本文件还是py2exe编译后的文件,如果是脚本文件,则返回的是脚本的目录,如果是py2exe编译后的文件,则返回的是编译后的文件路径
if
return
elif
return
#获取父目录
def
if not
return None;
lsPath = os.path.split(strPath);
if lsPath[1]:
return lsPath[0];
0]);
return lsPath[0];
#获取所有界面的json文件列表
def getAllExtFile(path,fromatx = ".txt"):
jsondir = path
jsonfilelist = []
for root, _dirs, files in
for filex in
#print filex
name,text = os.path.splitext(filex)
if cmp(text,fromatx) == 0:
jsonArr = []
rootdir = path
dirx = root[len(rootdir):]
pathName = dirx +os.sep + filex
jsonArr.append(pathName)
(newPath,_name) = os.path.split(pathName)
jsonArr.append(newPath)
jsonArr.append(name)
jsonfilelist.append(jsonArr)
return
def getAllTxtFileFromDir(txtpath = '/Users/fengmm521/Documents/ebook/book'):
'.txt')
txtfs = []
for dx in
0])
return
def getAllPxtFileFromDir(txtpath = ''):
'.ptx')
txtfs = []
for dx in
0])
return
def ecodeTxtFileAndSave(txtf,pw = 'password'):
'r')
txtstr = f.read()
f.close()
ptxtstr = []
print txtstr[0:10]
0
for c in
if
0
ptxtstr.append(ord(c)^ord(pw[pwn]))
1
(newPath,_extname) = os.path.splitext(txtf)
(pathx,filename) = os.path.split(newPath)
'.ptx'
'w')
ary = numpy.asarray(ptxtstr)
'float').tofile(fsave)
fsave.close()
def decodeTxtFromFilePath(txtf,pw = 'password'):
'r')
xtx = numpy.fromfile(ptxfile)
ptxfile.close()
ptxtstr = list(xtx)
''
0
for c in
if
0
pxtmp += chr(int(c)^ord(pw[pwn]))
1
def
txtfs = getAllTxtFileFromDir()
if
for tx in
ecodeTxtFileAndSave(tx)
def
txtfs = getAllPxtFileFromDir(cur_file_dir())
for ftmp in
decodeTxtFromFilePath(ftmp)
def
ecodeAllFileAndSave()
decodeAllTxtFromFile()
if __name__ == '__main__':
main()
这里有一些处理方法在别的地方可能大家会用的上,像:
1.如何对字符串中每一个字符转为ascii码,以及如何将ascii码转为字符的两个函数
ord(c):
这个python函数的主要功能是将字符转为ascii码整数
chr(i):
这个函数的功能自然就是将整数的ascii码转为字符
2.使用numpy模块的tofile(f)函数将list数据以二进制数据流的型式写入文件。
nuarray = numpy.asarray(list_type),可以将list数组转为numpy.array
为了将数据按整数写入文件,需要对数据转为float类型,如果系统是64位的,则在写入文件时会保存为float64。这样从文件中载入array后解析时就无法解析出ascii码。
'float')处理:
'float').tofile(savefile)
3.使用numpy.fromfile(savefile),可以从文件中载入通过numpy.tofile(sf)保存的二进制数组
4.使用list(numpyarray),可以轻松将numpy.array转为list数组。
5.使用异或运算(^)只能对整数与整数操作。所以对字符使用异或加密时,要将字符转为ascii码才行。
欢迎转载:
转载请注明出处: http://fengmm521.blog.163.com/blog/static/25091358201623021347813/
版权声明
本文仅代表作者观点,不代表博信信息网立场。