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

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

阅读更多:Python 教程

介绍

什么是密码学?密码学涉及将明文转换为密文,这称为数据加密,将密文转换为明文,这称为数据解密。

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

现在,您知道我们将要处理什么,让我们开始吧。

入门

密码学模块未与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=

加密数据

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

encrypted_data = f.encrypt(b"此消息正在被加密,不能被查看!")

那就是它,以上句子已被加密。

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

print(encrypted_data)

输出

b'gAAAAABgILy91p_wqMntdT3mDkh0IBXSLjuBMQAfnGZAFkZCX1U6Q7TU2PthgFBwVz0QbKXpuNTHRzAgbdDV4zfuuzkGCXqVD--xJdkTycKH2iurC_oqHySLc9xJEXz93LkhTbKUa5HCxfJtB-Um_YkxqjclftXXZQ=='

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

解密数据

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

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

decrypted_data = f.decrypt(encrypted_data)# f是具有密钥值的变量。
print(decrypted_data)

输出

b'此消息正在被加密,不能被查看!'

− 如果您查看上面的输出,您会注意到打印纯文本之前有b’,这是因为已加密数据正在转换回字节格式。为了获得纯文本,我们需要使用decode函数。

print(decrypted_data.decode())

输出

此消息正在被加密,不能被查看!

注意− 您可以使用相同的密钥加密和解密数据。也就是说,如果打印密钥的值并保存它。您可以通过将其分配给变量来使用相同的密钥。 例如−>

f = Fernet(Bq64GE--93K1RVro4go1frN-8twBSvXdbCPSPLIKz9U=) #给出实际密钥的值。

示例

from cryptography.fernet import Fernet
key = Fernet.generate_key()
print("Key : ", key.decode())
f = Fernet(key)
encrypted_data = f.encrypt(b"这个信息正在加密中,无法被查看!")
print("加密后: ", encrypted_data)
decrypted_data = f.decrypt(encrypted_data)
print(decrypted_data)
print("解密后: ", decrypted_data.decode())

输出

Key : u4dM7xw8sNNU3Rm_lwDbixudWSeaM0Z4TTDdQNKsouI=
加密后: b'gAAAAABgIL3_qbfM_oMgQn653gpk6a7hqxXiR0dl0vrmOmqnr5b6MqrsjGkK1IknxMLLtOCq6_YlX4x3nBedbZqtCqy4os55pttrl-pBO6-dJf6kVP50IpIaKSXbpAsuWl4h_2o_E-4YEqZ5kkgxWrwnqojmkMyuSQ=='
b'这个信息正在加密中,无法被查看!'
解密后: 这个信息正在加密中,无法被查看!

结论

您现在已经学会了使用Python中的cryptography包加密和解密数据。

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

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程