我编写了这个小文件加密模块,以提高我使用os模块的技能。这是我第一次使用它来导航文件和文件结构,所以我确信有些东西可以改进。我使用了以下文件结构来确保它与多个目录一起工作:
.
├── files
│ ├── files
│ │ ├── test.txt
│ │ ├── test2.txt
│ │ └── test3.txt
│ ├── files2
│ │ ├── files
│ │ │ ├── test.txt
│ │ │ ├── test2.txt
│ │ │ └── test3.txt
│ │ ├── test.txt
│ │ ├── test2.txt
│ │ └── test3.txt
│ ├── test.txt
│ ├── test2.txt
│ └── test3.txt
├── key.py
└── virus.py它运行得完美无缺。我在寻找关于以下几个话题的反馈:
os模块:os模块中是否还有其他功能可以用来完成相同的任务,但更容易或更快?"""
File Encryption & Decryption
"""
import os
from cryptography.fernet import Fernet
from key import KEY
DIRECTORY = "files"
FERNET = Fernet(KEY)
def crypt(encrypt=True) -> None:
"""
Encrypts/Decrypts the files in DIRECTORY
"""
for root, _, files in os.walk(DIRECTORY, topdown=True):
for name in files:
file = os.path.join(root, name)
with open(file, "rb") as in_file:
data = in_file.read()
data = FERNET.encrypt(data) if encrypt else FERNET.decrypt(data)
with open(file, "wb") as out_file:
out_file.write(data)
if __name__ == '__main__':
# Encrypt #
crypt()
# Decrypt #
crypt(encrypt=False)发布于 2019-10-02 20:35:26
一些建议:
encrypt和decrypt函数,它们都重用了第三个函数,它负责所有的簿记工作。在本例中,第三个函数只需将FERNET.encrypt或FERNET.decrypt方法作为参数,并将其应用于数据。argparse ),以便能够传递要使用的任意路径。一般来说,我不会担心加密和解密需要很长时间。如果您的密钥太长(特定于算法),它可能会大大降低算法的速度,但许多算法可以被认为是相当慢的公共输入。我不知道你为什么特别选择Fernet,但是有很多可用的算法,您可能想要评估它们的强度和速度。
https://codereview.stackexchange.com/questions/230047
复制相似问题