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

Python函数:如何实现字符串的加密和解密?

发布时间:2023-10-28 06:57:35

在Python中,可以使用各种加密和解密算法来实现字符串的加密和解密。下面介绍几种常用的方法。

1. Caesar密码:Caesar密码是一种简单的字母替换密码,在加密时将字符串中的每个字母根据预设的偏移量移动位置,实现加密;解密时将字母反向移动相同的偏移量即可。以下是实现Caesar密码的代码:

def caesar_encrypt(text, shift):
    result = ""
    for char in text:
        if char.isalpha(): # 只对字母进行操作
            ascii_offset = 65 if char.isupper() else 97
            encrypted_char = chr((ord(char) - ascii_offset + shift) % 26 + ascii_offset)
            result += encrypted_char
        else:
            result += char
    return result

def caesar_decrypt(text, shift):
    return caesar_encrypt(text, -shift)

使用示例:

text = "hello world"
shift = 3
encrypted_text = caesar_encrypt(text, shift)
print(encrypted_text)  # 输出:khoor zruog
decrypted_text = caesar_decrypt(encrypted_text, shift)
print(decrypted_text)  # 输出:hello world

2. AES加密算法:AES(Advanced Encryption Standard)是一种常用的对称加密算法,它可以加密和解密较大的数据块。Python的cryptography库提供了AES的实现。以下是使用AES加密和解密字符串的代码:

from cryptography.fernet import Fernet

def aes_encrypt(text, key):
    f = Fernet(key)
    encrypted_text = f.encrypt(text.encode()).decode()
    return encrypted_text

def aes_decrypt(encrypted_text, key):
    f = Fernet(key)
    decrypted_text = f.decrypt(encrypted_text.encode()).decode()
    return decrypted_text

使用示例:

from cryptography.fernet import Fernet

key = Fernet.generate_key() # 生成随机的加密密钥
text = "hello world"
encrypted_text = aes_encrypt(text, key)
print(encrypted_text)
decrypted_text = aes_decrypt(encrypted_text, key)
print(decrypted_text)

3. Base64编码:Base64编码是一种将二进制数据转换为ASCII字符表示的方法,它可以实现对字符串的简单加密和解密。以下是使用Base64编码的代码:

import base64

def base64_encrypt(text):
    encrypted_text = base64.b64encode(text.encode()).decode()
    return encrypted_text

def base64_decrypt(encrypted_text):
    decrypted_text = base64.b64decode(encrypted_text.encode()).decode()
    return decrypted_text

使用示例:

text = "hello world"
encrypted_text = base64_encrypt(text)
print(encrypted_text)
decrypted_text = base64_decrypt(encrypted_text)
print(decrypted_text)

以上是几种常用的字符串加密和解密方法的实现示例。根据不同的需求,可以选择适合的方法来实现字符串的加密和解密。