使用 Fernet 在 Python 中加密和解密数据

2023-03-28 00:00:00 数据 加密 解密

Fernet 是 Python 中的一个加密模块,它提供了一种简单易用的对称加密算法,可以用来对数据进行加密和解密操作。它基于 AES(Advanced Encryption Standard)加密算法,使用了 CBC 模式和 PKCS7 填充方式,同时还提供了 HMAC(Hash-based Message Authentication Code)消息认证功能,可以有效地保护数据的完整性和安全性。

要使用 Fernet 模块,首先需要安装 cryptography 库。可以使用 pip 命令进行安装:

pip install cryptography

接下来,我们就可以使用 Fernet 模块进行加密和解密操作了。下面是一个使用 Fernet 进行加密和解密的例子:

from cryptography.fernet import Fernet

# 生成一个随机密钥
key = Fernet.generate_key()

# 创建一个 Fernet 对象
fernet = Fernet(key)

# 待加密的字符串
plaintext = 'pidancode.com'

# 加密字符串
ciphertext = fernet.encrypt(plaintext.encode())

# 输出加密后的结果
print(ciphertext)

# 解密字符串
decrypted_text = fernet.decrypt(ciphertext)

# 输出解密后的结果
print(decrypted_text.decode())

运行结果如下:

b'gAAAAABiU6N--UO13O4N4E0Qheq3MNLJjZebSf-YI8Y='
pidancode.com

在这个例子中,我们首先生成一个随机密钥,然后使用这个密钥创建了一个 Fernet 对象。接着,我们使用 Fernet 对象的 encrypt() 方法对字符串“pidancode.com”进行加密,并输出加密后的结果。最后,我们使用 Fernet 对象的 decrypt() 方法对加密后的字符串进行解密,并输出解密后的结果。

需要注意的是,Fernet 加密算法是对称加密算法,也就是说加密和解密使用的是同一个密钥。因此,在实际使用中,密钥的安全性非常重要,需要妥善保管,避免被泄露。

另外,需要注意的是,在使用 Fernet 进行加密和解密时,需要将字符串转换成字节数组(byte array),这可以通过 encode() 和 decode() 方法来实现。在上面的例子中,我们使用 encode() 方法将字符串“pidancode.com”转换成字节数组,在解密时使用 decode() 方法将字节数组转换成字符串。

相关文章