如何在 Python 中加密和解密数据
介绍
什么是加密?加密处理将明文转换为密文,这称为数据加密;并将密文转换回明文,这称为数据解密。
我们将使用 **cryptography 包中的 fernet 模块** 来使用 Python 加密和解密数据。在使用 fernet 模块时,会生成一个唯一的密钥,没有它,您将无法读取或操作加密数据。
现在您已经了解了我们将要处理的内容,让我们开始吧。
入门
cryptography 模块没有与 Python 打包在一起,这意味着您需要使用 pip 包管理器来安装它。为此,启动您的终端并输入以下代码。
pip install cryptography
下载并安装软件包后,您可以导入其模块。
我们将使用 fernet 模块来加密和解密数据。因此,让我们将其导入 Python 脚本中。
from cryptography.fernet import Fernet
**注意** - 确保大写正确。
您已准备好开始编写您的脚本了。
生成密钥
为了开始加密数据,您必须首先创建一个 **fernet 密钥**。
key = Fernet.generate_key() f = Fernet(key)
在上面的代码行中,我们使用 generate_key() 方法生成了一个密钥,然后在下一行中将其分配给变量“f”。
就是这样,您现在有一个存储在变量中,准备使用的密钥了。
如果需要,我们可以打印密钥并将其存储。打印时请务必使用 decode 函数。
print(key.decode())
输出
Bq64GE−−93K1RVro4go1frN−8twBSvXdbCPSPLIKz9U=
加密数据
为了使用上述密钥加密数据,您必须使用 encrypt 方法。
encrypted_data = f.encrypt(b"This message is being encrypted and cannot be seen!")
就是这样,上面的句子已被加密。
要查看加密的消息,您必须打印它。
print(encrypted_data)
输出
b'gAAAAABgILy91p_wqMntdT3mDkh0IBXSLjuBMQAfnGZAFkZCX1U6Q7TU2PthgFBwVz0QbKXpuNTHRzAgbdDV4zfuuzkGCXqVD--xJdkTycKH2iurC_oqHySLc9xJEXz93LkhTbKUa5HCxfJtB-Um_YkxqjclftXXZQ=='
**注意** - 我们在句子之前使用了 b 以将其转换为字节格式。您也可以选择使用 encode() 方法。
解密数据
现在您有了密文,让我们看看如何将其转换回可读的明文。
我们可以使用 fernet 模块中的 decrypt 方法来实现解密。
decrypted_data = f.decrypt(encrypted_data) # f is the variable that has the value of the key. print(decrypted_data)
输出
b'This message is being encrypted and cannot be seen!'
**注意** - 如果您查看上面的输出,您会注意到在打印的明文之前有 b',这是因为加密数据正在转换回字节格式。为了只获取明文,我们需要使用 decode 函数。
print(decrypted_data.decode())
输出
This message is being encrypted and cannot be seen!
注意 - 您可以使用相同的密钥加密和解密数据。也就是说,如果您打印密钥的值并保存它。您可以通过将其分配给变量来使用相同的密钥。示例 ->
f = Fernet(Bq64GE--93K1RVro4go1frN-8twBSvXdbCPSPLIKz9U=) # Value of an actual key is given.
示例
from cryptography.fernet import Fernet key = Fernet.generate_key() print("Key : ", key.decode()) f = Fernet(key) encrypted_data = f.encrypt(b"This message is being encrypted and cannot be seen!") print("After encryption : ", encrypted_data) decrypted_data = f.decrypt(encrypted_data) print(decrypted_data) print("After decryption : ", decrypted_data.decode())
输出
Key : u4dM7xw8sNNU3Rm_lwDbixudWSeaM0Z4TTDdQNKsouI= After encryption : b'gAAAAABgIL3_qbfM_oMgQn653gpk6a7hqxXiR0dl0vrmOmqnr5b6MqrsjGkK1IknxMLLtOCq6_YlX4x3nBedbZqtCqy4os55pttrl-pBO6-dJf6kVP50IpIaKSXbpAsuWl4h_2o_E-4YEqZ5kkgxWrwnqojmkMyuSQ==' b'This message is being encrypted and cannot be seen!' After decryption : This message is being encrypted and cannot be seen!
结论
您现在已经学会了如何使用 Python 中的 cryptography 包加密和解密数据。
您甚至可以将密钥保存为 .txt 文件,然后检索它来加密和存储密码或从数据库中解密密码以验证其是否匹配。您可以使用它在各种其他情况下,无论是小型项目还是大型项目。
有关 cryptography 模块的更多信息,您可以阅读其官方文档 - https://pypi.ac.cn/project/cryptography/