如何在Python中加密和解密数据

介绍

什么是密码学?密码学负责将纯文本转换为密文,将其称为数据加密,然后将密文转换回纯文本,即将数据解密。

我们将使用加密软件包中的fernet模块使用Python加密和解密数据。使用Fernet模块时,会生成一个唯一密钥,如果没有该密钥,您将无法读取或操作加密数据。

现在您知道了我们将要处理的内容,让我们开始吧。

入门

加密模块未随Python一起打包,这意味着您必须使用pip软件包管理器进行安装。为此,请启动您的终端并输入以下代码。

pip install cryptography

下载并安装软件包后,即可导入其模块。

我们将使用Fernet模块来加密和解密数据。因此,让我们将其导入Python脚本中。

fromcryptography.fernetimport Fernet

注意-确保您输入的大小写正确。

大家都准备开始编写脚本。

产生金钥

为了开始加密数据,您必须首先创建一个Fernet密钥

key = Fernet.generate_key()
f = Fernet(key)

在上述各行中,我们使用了generate_key()方法生成了一个键,然后在下一行中将该键分配给变量“ f”。

就是这样,您现在已经将密钥存储在一个随时可以使用的变量中。

如果需要,我们可以打印并存储密钥。确保在打印时使用解码功能。

print(key.decode())
输出结果
Bq64GE−−93K1RVro4go1frN−8twBSvXdbCPSPLIKz9U=

加密数据

为了从上述密钥加密数据,必须使用crypto方法。

encrypted_data = f.encrypt(b"该消息正在加密,无法看到!")

就是这样,上面的句子已经加密。

要查看加密的消息,您必须打印它。

print(encrypted_data)
输出结果
b'gAAAAABgILy91p_wqMntdT3mDkh0IBXSLjuBMQAfnGZAFkZCX1U6Q7TU2PthgFBwVz0QbKXpuNTHRzAgbdDV4zfuuzkGCXqVD--xJdkTycKH2iurC_oqHySLc9xJEXz93LkhTbKUa5HCxfJtB-Um_YkxqjclftXXZQ=='

注意-为了将其转换为字节格式,我们在句子前加了b。您也可以选择使用encode()方法。

解密数据

现在您有了密文,让我们看看如何将其转换回普通可读的文本。

我们可以使用Fernet模块中的解密方法来实现解密。

decrypted_data = f.decrypt(encrypted_data) # f是具有键值的变量。
print(decrypted_data)
输出结果
b'该消息正在加密,无法看到!'

-如果查看以上输出,您会注意到在打印的纯文本之前有b',这是因为已将加密数据转换回字节格式。为了只获取纯文本,我们需要使用解码功能。

print(decrypted_data.decode())
输出结果
该消息正在加密,无法看到!

注意-您可以使用相同的密钥加密和解密数据。即,如果您打印键的值并保存它。您可以通过将相同的键分配给变量来使用它。示例->

f = Fernet(Bq64GE--93K1RVro4go1frN-8twBSvXdbCPSPLIKz9U=) # Value of an actual key is given.

示例

fromcryptography.fernetimport Fernet
key = Fernet.generate_key()
print("Key : ", key.decode())
f = Fernet(key)
encrypted_data = f.encrypt(b"该消息正在加密,无法看到!")
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'该消息正在加密,无法看到!'
After decryption : 该消息正在加密,无法看到!

结论

您现在已经了解了如何使用Python中的加密程序包对数据进行加密和解密。

您甚至可以将密钥另存为.txt文件,然后将其检索以加密和存储密码,或者从数据库中解密密码以验证其是否匹配。您还可以使用其他各种情况,无论是小型项目还是大型项目。

有关加密模块的更多信息,您可以阅读以下文档的官方文档:https://pypi.org/project/cryptography/

猜你喜欢