1.文件名的加密与解密
from docx import Document
import os,sys
from docx.oxml.ns import qn
def file_name(user_dir,style):
file_list = list()
for root, dirs, files in os.walk(user_dir):
for file in files:
if (os.path.splitext(file)[1] == style):
file_list.append(os.path.join(root, file))
return file_list
def lock(path_file):
for i in range(len(path_file)):
if(path_file[-i-1]=='\\'):
name = path_file[-i:]
path_output = path_file[:-i]
break
if name!= sys.argv[0]:
os.rename(os.path.join(path_output,name),os.path.join(path_output,str(list(map(ord,name)))))
def unlock(path_file):
for i in range(len(path_file)):
if(path_file[-i-1]=='\\'):
name = path_file[-i:]
path_output = path_file[:-i]
break
if name!= sys.argv[0]:
os.rename(os.path.join(path_output,name),os.path.join(path_output,''.join(list(map(chr,eval(name))))))
def lock_files(path):
print('输入需要加密的文件后缀:')
style = input()
path_files = file_name(path,'.'+style)
for path_file in path_files:
lock(path_file)
def unlock_files(path):
path_files = file_name(path,'')
for path_file in path_files:
unlock(path_file)
if __name__ == '__main__':
global path
path = '.\\'
print('菜单:\n1.加密\n2.解密')
n = eval(input())
if(n==1):
lock_files(path)
else:
unlock_files(path)
2.docx文件名和文本内容的加密与解密
from docx import Document
import os,sys
from docx.oxml.ns import qn
list_sort = ['\\Ethics\\','\\Famous\\','\\Daily\\']
def file_name(user_dir):
file_list = list()
for root, dirs, files in os.walk(user_dir):
for file in files:
if (os.path.splitext(file)[1] == '.docx' or os.path.splitext(file)[1] == ''):
file_list.append(os.path.join(root, file))
return file_list
def lock(path_file):
doc = Document(path_file)
doc_ascii = Document()
doc_ascii.styles['Normal'].font.name = u'宋体'
doc_ascii.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
for i in list_sort:
if i in path_file:
sort = i
for value in doc.paragraphs:
text = value.text
ascii_str = list(map(ord, text))
if(ascii_str==[]):
continue
doc_ascii.add_paragraph(str(ascii_str))
for i in range(len(path_file)):
if(path_file[-i-1]=='\\'):
name = path_file[-i:]
break
path_output = path + '加密' + sort
if not os.path.exists(path_output):
os.makedirs(path_output)
doc_ascii.save(path_output + str(list(map(ord,name))) )
def unlock(path_file):
doc = Document(path_file)
doc_new = Document()
doc_new.styles['Normal'].font.name = u'宋体'
doc_new.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
for i in list_sort:
if i in path_file:
sort = i
for code in doc.paragraphs:
code = eval(code.text)
prot_str = ''.join(map(chr,code))
doc_new.add_paragraph(prot_str)
for i in range(len(path_file)):
if(path_file[-i-1]=='\\'):
name = path_file[-i:]
break
path_output = path + '解密' + sort
if not os.path.exists(path_output):
os.makedirs(path_output)
doc_new.save(path_output + ''.join(list(map(chr,eval(name)))))
def lock_files(path):
path_files = file_name(path)
for path_file in path_files:
lock(path_file)
def unlock_files(path):
path_files = file_name(path)
for path_file in path_files:
unlock(path_file)
if __name__ == '__main__':
global path
path = '.\\'
lock_files(path)
3.在文件名中插入随机数
import os,sys
from random import randint
def add_prefix_files():
old_names = os.listdir(path)
for old_name in old_names:
if old_name!= sys.argv[0]:
if old_name.endswith('.mp4'):
temp = list(old_name)
for i in range(1,len(temp)):
if(temp[i] < 'z' and temp[i]<'a' or temp[i] < 'Z' and temp[i]<'A'):
continue
else:
num = randint(0,9)
temp[i] = str(num) + temp[i]
new_name = ''.join(temp)
os.rename(os.path.join(path,old_name),os.path.join(path,new_name))
if __name__ == '__main__':
path = r'H:\\视频\\娱乐\\娱乐\\PPT\\'
add_prefix_files()
4.六种文本加密编码的介绍
from urllib.parse import quote, unquote
import base64,hashlib
string = input()
utf8_code = quote(string,encoding='utf-8')
prot_str = unquote(utf8_code,encoding='utf-8')
print('utf-8:',utf8_code)
print('解码:',prot_str)
gbk_code = quote(string,encoding='gbk')
prot_str = unquote(gbk_code,encoding='gbk')
print('gbk:',gbk_code)
print('解码:',prot_str)
b64_code = base64.b64encode(string.encode())
prot_str = base64.b64decode(b64_code).decode()
print('base64编码:',b64_code)
print('解码:',prot_str)
ascii_str = list(map(ord, string))
prot_str = ''.join(map(chr, ascii_str))
print('ASCII码:',ascii_str)
print('解码:',prot_str)
md5 = hashlib.md5()
md5.update(string.encode('utf-8'))
code = md5.hexdigest()
print('md5密文:',code)
unicode_str = string.encode("unicode_escape")
utf8_str = string.encode("utf-8")
gbk_str = string.encode("gbk")
print('unicode:',unicode_str)
print('utf8:',utf8_str)
print('gbk:',gbk_str)
print('unicode解码:',unicode_str.decode("unicode_escape"))
print('utf-8解码:',utf8_str.decode())
print('gbk解码:',gbk_str.decode("gbk"))