admin管理员组

文章数量:1575482

写了一对简单的加密、解密脚本,加密算法是AES_CBC,密钥长128bit(这里用16个utf-8的单字节字符代替了)。

数据无价,谨慎操作,笔者不保证脚本的正确性,可能给会导致文件错误。笔者不对数据丢失负责

建议自己看懂后写一遍,至少自己先测试一下,不要用于重要文件,警惕数据丢失!

笔者不懂密码学,只是调了一下API

加密时,将工作文件夹下的文件加密,将AES_CBC的初始化向量iv和加密数据依次拷贝到工作文件夹下的加密文件中,然后将加密后的文件拷贝到同步文件夹下。工作文件夹下删除原文件,保留加密后文件。
解密时,从同步文件夹拷贝加密后的文件到工作文件夹,然后解密,将被解密的文件放在工作文件夹下。

1. 需要安装的库

安装pycrytodome库,在Windows下,这个库叫pycrytodomex

2.需要的文件

  1. encrypter.py 用于加密
  2. decrypter.py 用于解密
  3. config.json 包含被加密的文件名,加密后的文件名,同步文件夹的路径
  4. key.txt 一个包含16个utf-8字符的文档,是加密和解密的密钥。

3.config.json示例

只有这三个参数

[
	{
   
		"fileName" : "cat.jpg",
		"encryptedFileName" : "encryptedCat.bin",
		"syncDir" : "C:/.../OneDrive/"
	}
]

4.key.txt示例

只需要16个utf-8的单字节字符(最好就用字母和数字)。

abcdefghijklmnop

5.encrypter.py

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad

import json
import shutil
import os

fileName = ''
encryptedFileName = ''
syncDir = ''

def loadConfig():
    global fileName,encryptedFileName,syncDir
    try:
        with open("config.json","r",encoding="utf-8") as configFile:
            config = json.load(configFile)
            fileName = config[0]['fileName']
            encryptedFileName = config[0]['encryptedFileName']
            syncDir = config[

本文标签: 文件加密简单拷贝到