u盘加密代码
时间: 2023-08-06 15:19:21 浏览: 256
以下是使用Python编写的一个简单的U盘加密程序:
```python
import os
import random
import string
import hashlib
def generate_key():
"""生成随机加密密钥"""
key = ''.join(random.choices(string.ascii_letters + string.digits, k=16))
return key
def encrypt_file(file_path, key):
"""加密文件"""
with open(file_path, 'rb') as f:
data = f.read()
md5 = hashlib.md5(data).hexdigest() # 计算文件的MD5值
encrypted_data = bytearray(data)
key_bytes = bytes(key, encoding='utf-8')
random.seed(md5) # 使用文件的MD5值作为随机数种子
for i in range(len(encrypted_data)):
encrypted_data[i] ^= random.randint(0, 255) ^ key_bytes[i % len(key_bytes)]
with open(file_path, 'wb') as f:
f.write(encrypted_data)
def decrypt_file(file_path, key):
"""解密文件"""
with open(file_path, 'rb') as f:
data = f.read()
md5 = hashlib.md5(data).hexdigest() # 计算文件的MD5值
decrypted_data = bytearray(data)
key_bytes = bytes(key, encoding='utf-8')
random.seed(md5) # 使用文件的MD5值作为随机数种子
for i in range(len(decrypted_data)):
decrypted_data[i] ^= random.randint(0, 255) ^ key_bytes[i % len(key_bytes)]
with open(file_path, 'wb') as f:
f.write(decrypted_data)
if __name__ == '__main__':
key = generate_key() # 生成加密密钥
print('加密密钥:', key)
drive_letter = input('请输入要加密的U盘驱动器号(例如E:):')
for root, dirs, files in os.walk(drive_letter):
for file in files:
file_path = os.path.join(root, file)
encrypt_file(file_path, key) # 加密文件
```
该程序会生成一个随机的加密密钥,然后遍历指定的U盘驱动器中的所有文件,对每个文件进行加密操作。加密时会先计算文件的MD5值作为随机数种子,然后使用随机数和密钥对文件进行异或运算,最终得到加密后的数据。解密时同理,先计算文件的MD5值作为随机数种子,然后使用随机数和密钥对加密后的数据进行异或运算,最终得到原始数据。
阅读全文