12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import json
- from cryptography.fernet import Fernet
- # 生成密钥,只需生成一次并保存
- def generate_key():
- key = Fernet.generate_key()
- with open("secret.key", "wb") as key_file:
- key_file.write(key)
- # 读取密钥
- def load_key():
- with open("secret.key", "rb") as key_file:
- return key_file.read()
- # 加密 JSON 文件
- def encrypt_json(input_file, encrypted_file):
- key = load_key()
- fernet = Fernet(key)
- with open(input_file, 'r', encoding='utf-8') as f:
- data = json.load(f)
- json_str = json.dumps(data)
- encrypted_data = fernet.encrypt(json_str.encode('utf-8'))
- with open(encrypted_file, 'wb') as f:
- f.write(encrypted_data)
- # 解密 JSON 文件
- def decrypt_json(encrypted_file, output_file):
- key = load_key()
- fernet = Fernet(key)
- with open(encrypted_file, 'rb') as f:
- encrypted_data = f.read()
- decrypted_data = fernet.decrypt(encrypted_data)
- data = json.loads(decrypted_data.decode('utf-8'))
- with open(output_file, 'w', encoding='utf-8') as f:
- json.dump(data, f, indent=4, ensure_ascii=False)
- # 示例用法
- if __name__ == "__main__":
- # 只需生成一次密钥
- # generate_key()
- # 加密
- encrypt_json("siwei_config.json", "siwei_config.json.enc")
- # 解密
- # decrypt_json("siwei_config_encry.json", "data_decrypted.json")
|