Json文件的加解密

HTTPS可以防止传输过程中数据被偷看,但无法阻止客户端本地的攻击。比如Json之类的文件,如果完全明文,可能会让一些黑客看到敏感信息。

是否可以对其进行一层简单的加密?

以Python为例子,用一个加密库就可以。

首先执行:pip install cryptography

然后开始编写如下代码。

from cryptography.fernet import Fernet
import json

# 生成密钥
key = Fernet.generate_key()
cipher_suite = Fernet(key)

# JSON 数据
data = {
    "name": "Alice",
    "age": 30,
    "city": "Wonderland"
}

# 将 JSON 数据转换为字符串
json_data = json.dumps(data)

# 加密 JSON 数据
encrypted_data = cipher_suite.encrypt(json_data.encode())

print("加密后的数据:", encrypted_data)
print("密钥:", key)

它会输出:

加密后的数据: b’gAAAAABmraTSlRWANyVFWRKm4CgjpoJEhyLID-ri64K3RP2yItbM-4POPid1dVh_1mWVItoSzZy-bPC_pObCCDUJ-ktuxWbi5zAcSn8VDrTiYiyqwXWvygLcBHmwToapDEDoqA6RjHQs_WeOCKAZqPnge5Q-J4xNpw==’
密钥: b’MvHuTCwAj3SNz93MZtI_1Ww_tHn9XVUFxyARGyGLTxQ=’

要解密的时候怎么办呢?

from cryptography.fernet import Fernet
import json
daa = b'gAAAAABmraTSlRWANyVFWRKm4CgjpoJEhyLID-ri64K3RP2yItbM-4POPid1dVh_1mWVItoSzZy-bPC_pObCCDUJ-ktuxWbi5zAcSn8VDrTiYiyqwXWvygLcBHmwToapDEDoqA6RjHQs_WeOCKAZqPnge5Q-J4xNpw=='
key = b'MvHuTCwAj3SNz93MZtI_1Ww_tHn9XVUFxyARGyGLTxQ='
decrypted_data = cipher_suite.decrypt(daa).decode()
json_data = json.loads(decrypted_data)
print(json_data)

它会输出:
{‘name’: ‘Alice’, ‘age’: 30, ‘city’: ‘Wonderland’}

以上代码使用了 Fernet 加密算法,这是对称加密的一种实现。Fernet 是一种基于 AES(高级加密标准) 的加密方案,具体来说,它使用 AES-128 在 CBC(密码分组链接)模式 下进行加密,并结合 PKCS7 填充 和 HMAC(基于哈希的消息认证码) 来确保数据的完整性和保密性。

发表回复