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

使用Python函数实现加密解密

发布时间:2023-05-31 23:17:57

Python是一种高级编程语言,被广泛应用于各种领域的开发。在本篇文章中,我们将使用Python函数实现加密解密的过程。

加密是指将一段明文通过某种方式转换成密文的过程,而解密则是将密文转换成原本的明文。在实际业务场景中,加密解密通常被用于保护信息的安全性,例如在网络传输过程中,将敏感信息进行加密可以防止其被窃取或篡改。

Python提供了许多加密解密相关的库,例如hashlib、hmac、pycrypto等。但在本篇文章中,我们将通过自定义函数来实现加密解密的过程。

首先,我们来了解一下加密解密的常见算法。常见的算法包括对称加密算法和非对称加密算法。

对称加密算法指的是加密和解密使用相同的密钥,例如AES、DES等。在加密过程中,需要将明文和密钥通过某种算法进行转换,生成密文。而在解密过程中,需要使用相同的密钥和算法,将密文转换成明文。

非对称加密算法指的是加密和解密使用不同的密钥,例如RSA、ECC等。在这种算法中,需要生成公钥和私钥两个密钥。在加密时,使用公钥加密明文,而在解密时,使用私钥进行解密。

在本篇文章中,我们将使用对称加密算法来实现加密解密的过程。我们将使用Python中的密钥管理库“cryptography”来生成密钥,并使用AES算法进行加密解密。

首先,我们需要安装cryptography库:

pip install cryptography

然后,我们将定义两个函数,encrypt和decrypt,用于实现加密和解密的过程。

加密函数的代码如下:

from cryptography.fernet import Fernet

def encrypt(key, msg):
    """
    加密函数
    :param key:bytes类型密钥
    :param msg:str类型明文
    :return:str类型密文
    """
    cipher = Fernet(key)
    # 将明文转换为bytes类型
    msg = msg.encode('utf-8')
    # 使用密钥加密明文,得到bytes类型密文
    encrypted_msg = cipher.encrypt(msg)
    # 将bytes类型密文转换为str类型
    encrypted_msg = encrypted_msg.decode('utf-8')
    return encrypted_msg

解密函数的代码如下:

def decrypt(key, encrypted_msg):
    """
    解密函数
    :param key:bytes类型密钥
    :param encrypted_msg:str类型密文
    :return:str类型明文
    """
    cipher = Fernet(key)
    # 将密文转换为bytes类型
    encrypted_msg = encrypted_msg.encode('utf-8')
    # 使用密钥解密密文,得到bytes类型明文
    decrypted_msg = cipher.decrypt(encrypted_msg)
    # 将bytes类型明文转换为str类型
    decrypted_msg = decrypted_msg.decode('utf-8')
    return decrypted_msg

以上代码中,我们使用Fernet类来生成密钥和加密解密数据。通过传入密钥和明文/密文,函数可以返回加密/解密后的结果。

接下来,我们将使用这两个函数进行加密解密的演示。我们首先需要生成一个密钥:

from cryptography.fernet import Fernet

# 生成密钥
key = Fernet.generate_key()
print(key)

以上代码将生成一个随机的32字节的密钥。我们可以将该密钥存储在本地文件中,以备后续使用。

接下来,我们可以使用加密函数encrypt来加密一个明文:

msg = 'Hello, world!'
# 使用密钥加密明文
encrypted_msg = encrypt(key, msg)
print('Encrypted message:', encrypted_msg)

运行以上代码,将输出加密后的密文。我们可以将该密文传输到其他地方,并使用解密函数decrypt来解密:

# 使用密钥解密密文
decrypted_msg = decrypt(key, encrypted_msg)
print('Decrypted message:', decrypted_msg)

运行以上代码,将输出解密后的明文。注意,解密过程使用的密钥必须和加密过程使用的密钥相同。

通过定义自己的加密解密函数,我们可以在Python中轻松地实现数据的加密和解密过程,从而保护数据的安全性。