📜  将纯文本消息转换为密文(1)

📅  最后修改于: 2023-12-03 15:09:38.737000             🧑  作者: Mango

将纯文本消息转换为密文

在网络通信中,我们经常需要对传输的数据进行加密,以保护数据不被恶意攻击者窃取。本文将介绍如何使用Python中的cryptography库将纯文本消息转换为密文。

安装cryptography库

在进行加密操作之前,我们需要安装cryptography库。可以使用pip直接安装:

pip install cryptography
生成密钥

使用对称密码算法,我们需要一个密钥来将明文消息转换为密文。可以使用以下代码生成一个128位的随机密钥:

from cryptography.fernet import Fernet

key = Fernet.generate_key()
加密消息

我们可以使用上面生成的密钥来加密消息。以下是一个将纯文本消息转换为密文的函数:

from cryptography.fernet import Fernet

def encrypt_message(message: str, key: bytes) -> bytes:
    f = Fernet(key)
    return f.encrypt(message.encode())

该函数使用Fernet类实例化一个加密器对象,然后使用对象的encrypt方法将消息转换为密文。加密过程中使用的密钥需要传入函数中。

解密消息

使用和加密时同样的密钥,我们可以将密文还原成原始的纯文本消息。以下是一个将密文还原为纯文本消息的函数:

from cryptography.fernet import Fernet

def decrypt_message(encrypted_message: bytes, key: bytes) -> str:
    f = Fernet(key)
    decrypted = f.decrypt(encrypted_message)
    return decrypted.decode()

该函数使用Fernet类实例化一个解密器对象,然后使用对象的decrypt方法将密文还原为原始消息。解密过程中使用的密钥需要传入函数中。

示例代码

下面的代码展示了如何使用上面的函数将纯文本消息转换为密文:

message = "Hello, world!"
key = Fernet.generate_key()

encrypted_message = encrypt_message(message, key)
print("Encrypted message:", encrypted_message)

decrypted_message = decrypt_message(encrypted_message, key)
print("Decrypted message:", decrypted_message)

输出结果:

Encrypted message: b'gAAAAABgSCJ0wMVrGkBmP8jHesJY9lFkiCJ0JdP8PNiZTdovVkrd18BcrSNSLJn8Qek-4s9sQNn4jxKHxETIrPtZJcUq3XdQw=='
Decrypted message: Hello, world!

以上就是将纯文本消息转换为密文的方法,我们可以使用这种方法来保护数据不被恶意攻击者窃取。