局域网共享文件加密是指在局域网内,对共享的文件进行加密处理,以保障数据的安全性和隐私性。以下是对该问题的详细解答:
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
from Crypto.Util.Padding import pad, unpad
import os
# 生成密钥
key = get_random_bytes(16) # AES-128需要16字节的密钥
# 加密文件
def encrypt_file(file_name, key):
cipher = AES.new(key, AES.MODE_CBC)
iv = cipher.iv
with open(file_name, 'rb') as f:
file_data = f.read()
encrypted_data = cipher.encrypt(pad(file_data, AES.block_size))
with open(file_name + '.enc', 'wb') as f:
f.write(iv + encrypted_data)
# 解密文件
def decrypt_file(file_name, key):
with open(file_name, 'rb') as f:
iv = f.read(16)
encrypted_data = f.read()
cipher = AES.new(key, AES.MODE_CBC, iv)
original_data = unpad(cipher.decrypt(encrypted_data), AES.block_size)
with open(file_name[:-4], 'wb') as f:
f.write(original_data)
# 示例用法
encrypt_file('example.txt', key)
decrypt_file('example.txt.enc', key)
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
import os
# 生成RSA密钥对
key = RSA.generate(2048)
private_key = key.export_key()
public_key = key.publickey().export_key()
# 加密文件
def encrypt_file(file_name, public_key):
recipient_key = RSA.import_key(public_key)
cipher_rsa = PKCS1_OAEP.new(recipient_key)
with open(file_name, 'rb') as f:
file_data = f.read()
encrypted_data = cipher_rsa.encrypt(file_data)
with open(file_name + '.enc', 'wb') as f:
f.write(encrypted_data)
# 解密文件
def decrypt_file(file_name, private_key):
private_key = RSA.import_key(private_key)
cipher_rsa = PKCS1_OAEP.new(private_key)
with open(file_name, 'rb') as f:
encrypted_data = f.read()
original_data = cipher_rsa.decrypt(encrypted_data)
with open(file_name[:-4], 'wb') as f:
f.write(original_data)
# 示例用法
encrypt_file('example.txt', public_key)
decrypt_file('example.txt.enc', private_key)
通过以上方法,可以在局域网内实现安全的文件共享,确保数据的机密性和完整性。
领取专属 10元无门槛券
手把手带您无忧上云