欢迎访问宙启技术站
智能推送

使用Python实现一个简单的数据加密程序

发布时间:2023-12-04 11:24:29

以下是一个使用Python实现的简单数据加密程序的例子:

import base64
from cryptography.fernet import Fernet

def generate_key():
    """
    生成加密密钥
    """
    key = Fernet.generate_key()
    with open('key.key', 'wb') as key_file:
        key_file.write(key)

def load_key():
    """
    加载密钥
    """
    return open('key.key', 'rb').read()

def encrypt_data(message):
    """
    加密数据
    """
    key = load_key()
    cipher_suite = Fernet(key)
    encrypted_message = cipher_suite.encrypt(message.encode())
    return base64.urlsafe_b64encode(encrypted_message).decode()

def decrypt_data(encrypted_message):
    """
    解密数据
    """
    key = load_key()
    cipher_suite = Fernet(key)
    decoded_message = base64.urlsafe_b64decode(encrypted_message)
    decrypted_message = cipher_suite.decrypt(decoded_message).decode()
    return decrypted_message

# 生成密钥
generate_key()

# 待加密的数据
message = "Hello, world!"

# 加密数据
encrypted_message = encrypt_data(message)
print("加密后的数据:", encrypted_message)

# 解密数据
decrypted_message = decrypt_data(encrypted_message)
print("解密后的数据:", decrypted_message)

在这个例子中,我们使用了cryptography库来实现加密算法。首先,我们需要生成一个密钥,并保存到文件key.key中。然后,我们可以使用这个密钥来加密和解密数据。

加密数据的函数encrypt_data接受一个字符串作为输入,使用生成的密钥创建一个Fernet对象,然后使用该对象加密输入的数据。为了安全起见,我们还对加密后的数据进行了Base64编码,以便在需要时进行传输或存储。

解密数据的函数decrypt_data接受一个经过加密和编码的字符串作为输入。它首先使用之前生成的密钥创建一个Fernet对象,然后对输入的字符串进行解码和解密操作,最后返回解密后的字符串。

在示例中,我们首先生成了一个密钥,然后将字符串"Hello, world!"作为待加密的数据。接下来,我们调用encrypt_data函数来加密数据,并打印出加密后的结果。最后,我们使用decrypt_data函数对加密后的数据进行解密,并打印出解密后的结果。

注意:在实际应用中,为了安全起见,密钥的生成和管理应该参考更加严谨的方法。此例仅为了展示加密和解密的过程,并不具备高安全性。