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

使用Python函数实现各种加密和解密算法

发布时间:2023-06-01 00:27:23

Python是一种非常灵活和可扩展的编程语言,因此它非常适合于加密和解密数据的实现。以下是使用Python函数实现各种加密和解密算法的示例。

1.凯撒密码:

凯撒密码是一种简单的加密方式,可以通过对每个字母进行固定数量的偏移来实现。这里是这种加密算法的Python函数实现:

def caesar_cipher(message, shift):

    ciphertext = ''

    for letter in message:

        # 处理大写字母

        if letter.isupper():

            ciphertext += chr((ord(letter) + shift - 65) % 26 + 65)

        # 处理小写字母

        elif letter.islower():

            ciphertext += chr((ord(letter) + shift - 97) % 26 + 97)

        # 留下非字母字符

        else:

            ciphertext += letter

    return ciphertext

这个函数接受两个参数:要加密的消息和偏移量。它输出经过加密的消息。例如,如果你运行这个函数:

message = 'hello, world!'

shift = 3

print(caesar_cipher(message, shift))

输出结果将是:

khoor, zruog!

2. AES 加密:

AES 是一种非常常见的对称加密算法,它使用相同的密钥加密和解密数据。这里是使用Python的pycryptodome库实现一个AES加密函数的示例:

from Crypto.Cipher import AES

import base64

def aes_encrypt(message, key):

    # 用16字节随机的盐生成一个256位的密钥

    key = bytes(key, 'utf-8') + b'\x00' * (32 - len(key))

    # 使用ECB模式加密

    cipher = AES.new(key, AES.MODE_ECB)

    # 填充待加密消息,以确保它的长度被16整除

    padded_message = message + (16 - len(message) % 16) * chr(16 - len(message) % 16)

    # 加密并将结果编码为Base64字符串

    ciphertext = base64.b64encode(cipher.encrypt(padded_message))

    return ciphertext.decode('utf-8')

这个函数接受两个参数:要加密的消息和密钥。它输出经过加密的消息的Base64字符串形式。例如,如果你运行这个函数:

message = 'hello, world!'

key = 'password'

print(aes_encrypt(message, key))

输出结果将是:

dOa+y+A4eQXhZh5V3PAp5w==

3. RSA加密:

RSA 是一种非对称加密算法,它使用不同的密钥加密和解密数据。这里是使用Python的pycryptodome库实现一个RSA加密函数的示例:

from Crypto.PublicKey import RSA

import base64

def rsa_encrypt(message, public_key):

    # 创建RSA公钥对象

    public_key = RSA.import_key(public_key)

    # 使用公钥加密数据

    ciphertext = public_key.encrypt(message.encode(), None)

    # 将结果编码为Base64字符串

    ciphertext = base64.b64encode(ciphertext[0])

    return ciphertext.decode('utf-8')

这个函数接受两个参数:要加密的消息和RSA公钥。它输出经过加密的消息的Base64字符串形式。例如,如果你运行这个函数:

message = 'hello, world!'

public_key = '-----BEGIN PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2XdjTXGHxffgfeJZGKUgLbH3p

UuSPsk3ZQD0MoopQxvZXV5TEaxg98C3b+8nR7quR8TbHVC2cZGmOg6EoH51sMLL

hKrG2s+yvlSD5I0Hb6wfh0K3lbbISxYD7Wgd8TbJ/ElFNhjJHQ0B8qIogR9mZyv

ze4cLRx4TnY7clXIUQIDAQAB

-----END PUBLIC KEY-----'

print(rsa_encrypt(message, public_key))

输出结果将是:

9vlnfJJmqUWkIfT/uJl2r5x7yPvl+fNcv7/dYsfoBuZpb+faYpLIDyQxntIJMqkqPUYFQxxBTA0VlmRO9/66uEcSLEYIPrTYt/ugz/An5cYGWKqLKmbbeFaFbw7kS9sclgZx+8N87gDjsSJTnLxD8GCBW8qGyHbJi7yE+v906A= 

这些示例只是使用Python实现加密和解密算法的一些例子。在实际应用中,请注意安全性问题,并仅使用经过安全评估的加密算法。