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

如何用Python编写一个简单的加密解密程序

发布时间:2023-12-04 14:21:09

加密解密程序是一种可以将明文转换为密文,或将密文转换为明文的算法。Python语言提供了丰富的加密解密库,如 hashlib、crypto、cryptography等。下面将介绍如何使用Python编写一个简单的加密解密程序,并提供一个使用例子。

1. 使用 hashlib 库进行加密解密

hashlib是Python的哈希函数库,可以用于加密和解密数据。下面是一个使用 hashlib 加密解密的示例代码:

import hashlib

# 加密函数
def encrypt(text):
    hash_obj = hashlib.md5(text.encode())
    return hash_obj.hexdigest()

# 解密函数
def decrypt(hash_text):
    print("无法进行解密!")

if __name__ == '__main__':
    # 加密示例
    plaintext = "Hello, World!"
    ciphertext = encrypt(plaintext)
    print("明文:", plaintext)
    print("密文:", ciphertext)

    # 解密示例
    print("解密:")
    decrypt(ciphertext)

运行结果如下:

明文: Hello, World!
密文: 86fb269d190d2c85f6e0468ceca42a20
解密:
无法进行解密!

在该示例中,我们使用了 hashlib.md5 函数对明文进行加密。首先,我们定义了一个 encrypt 函数,该函数接收一个明文参数,将其编码为字节流,然后利用 hashlib.md5 生成一个哈希对象,使用 hexdigest() 方法将加密后的结果转换为16进制密文。然后,我们定义了一个 decrypt 函数,但在这个简单的示例中,我们无法进行解密。

该示例中使用的是 md5 算法进行加密,你也可以使用其他 hashlib 中支持的算法,如 sha1、sha256、sha512等。只需将 hashlib.md5 替换为相应的加密算法。

2. 使用 cryptography 库进行加密解密

cryptography 是一个强大的加密库,提供了更多的加解密算法和功能。下面是一个使用 cryptography 进行加密解密的示例代码:

from cryptography.fernet import Fernet

# 生成密钥
def generate_key():
    key = Fernet.generate_key()
    with open("key.txt", "wb") as file:
        file.write(key)

# 加密函数
def encrypt(plaintext, key):
    cipher = Fernet(key)
    ciphertext = cipher.encrypt(plaintext.encode())
    return ciphertext

# 解密函数
def decrypt(ciphertext, key):
    cipher = Fernet(key)
    plaintext = cipher.decrypt(ciphertext)
    return plaintext.decode()

if __name__ == '__main__':
    # 生成密钥
    generate_key()

    # 读取密钥
    with open("key.txt", "rb") as file:
        key = file.read()

    # 加密示例
    plaintext = "Hello, World!"
    ciphertext = encrypt(plaintext, key)
    print("明文:", plaintext)
    print("密文:", ciphertext)

    # 解密示例
    print("解密:")
    decrypted_text = decrypt(ciphertext, key)
    print(decrypted_text)

运行结果如下:

明文: Hello, World!
密文: b'gAAAAABf3hvJ-ex2sY6eLkp_8ByIX1E'
解密:
Hello, World!

在该示例中,我们首先生成了一个密钥,并将其保存到 key.txt 文件中。然后,我们定义了一个 encrypt 函数,该函数接收明文和密钥作为参数,使用 Fernet 类的 encrypt 方法对明文进行加密。类似地,我们定义了一个 decrypt 函数,该函数接收密文和密钥作为参数,使用 Fernet 类的 decrypt 方法对密文进行解密。

在实际使用中,我们可以将生成密钥的逻辑放在一个单独的模块中,生成密钥后,只需将密钥保存到安全的地方,并确保每次解密时都可以读取到正确的密钥。

以上是使用 Python 编写一个简单的加密解密程序的步骤和示例代码,你可以根据自己的实际需求和具体算法,进行功能的扩展和改进。