目录

Small-fish文件加密库

1.加密

要加密文件内容

加密后内容

2.解密

1.代码讲解

字典

加密函数

解密函数


用Python实现对文件的内容进行加密,之前博主查询了资料看见的多半是Python把文件打包成另外一个格式或编码的文件,这样没意思了!还不如自己做一个加密程序,用来加密文件,这样,别人想随便盗取你的文件内容也得看得懂!它不香吗!

百度上的讲解基本上是什么算法之内的,真麻烦!我要是会就好了... 


Small-fish文件加密库

因为要解密文件,所以我就做了第一个第三个命令行库。用来加密文件的命令行。

安装它

pip install Small-fish

直接windows命令行输入: Small-fish -h 

这就能看到使用方法了


1.加密

命令行输入 Small-fish -e xxx 其中xxx代表要加密的文件(必须是UTF-8编码)

 下面输出的就是解密后内容


其实没有什么好神秘的原理,就是 

1.读取源文件 ——》2.将文件内容转换成指定字符 ——》4.写入一个加密文件

怎么样?是不是很简单,看效果图:

要加密文件内容

I am PYmili
You name?

加密后内容

I;/none;0a;0m;/none;P;Y;0m;0i;0l;0i;
;Y;0o;0u;/none;0n;0a;0m;0e;?;

这就是加密后的效果,都是只是概念。加密后会生成一个enc.ENC文件在当前目录,也就是命令行目录的位置

2.解密

那我们如何解密呢?

读取文件内容——》匹配内容是否相同——》转换至一个新文件

 依旧是命令行命令

Small-fish -d xxx 其中xxx表示要解密文件路径

 

 解密后就会生成dec.txt文件在当前目录,也就是命令行位置

这样文件就解密出来了!是不是很简单?


1.代码讲解

字典

class ENC:
    def __init__(self):
        self.cd={"a":"0x000a"}

首先我们得创建一个和一个字典,字典用来设定每个字符串要转换成什么字符。规则就是你自己指定了!想写什么就什么。


加密函数

def enc(self, filepath):
        self.path=filepath
        File_Msg=[]
        count = -1
        for count, lirn in enumerate(open(f'{self.path}', 'r', encoding='utf-8')):
            pass
        count += 1
        line = count
        with open(f"{self.path}", 'r', encoding="utf-8") as p:
            for rea in range(int(line)):
                rea=p.readline()
                File_Msg.append(rea)
        enc=[]
        with open(f"enc.ENC", 'w+', encoding="utf-8") as index:
            for Msg in File_Msg:
                for m in Msg:
                    if m == "a":
                        enc.append(self.cd["a"]+";")

文件加密,主要是读取文件的内容然后于字典的键匹配,匹配成功就可以写入到列表转换

for en in enc:
    print(en)
    index.write(en)

解密函数

解密函数于加密函数一致,只是识别的是字典的键值。然后转换

def dec(self, file):
    File_Msg=[]
    count = -1
    for count, lirn in enumerate(open(rf'{file}', 'r', encoding='utf-8')):
        pass
    count += 1
    line = count
    with open(f"{file}", 'r', encoding="utf-8") as dex:
        File_Msg=dex.read()
    dec=[]
    open(f"dec.txt", 'w', encoding='utf-8')
    with open(f"dec.txt", 'a+', encoding='utf-8') as dexc:
        print(File_Msg)
        for m in File_Msg.split(';'):
            if m == self.cd["a"]:
        for de in dec:
            dexc.write(de)
    

有问题或源代码在我的QQ群:706128290 免费拿取或提问

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐