Python---常见加密解密

在Python中,有许多常见的加密和解密算法可以使用。以下是一些常见的加密和解密方法和示例代码:

MD5加密:

import hashlib

def md5_encrypt(text):
    md5 = hashlib.md5()
    md5.update(text.encode('utf-8'))
    encrypted_text = md5.hexdigest()
    return encrypted_text

# 示例用法
text = "Hello, World!"
encrypted_text = md5_encrypt(text)
print("加密前的文本:", text)
print("加密后的文本:", encrypted_text)

SHA-256加密:

import hashlib

def sha256_encrypt(text):
    sha256 = hashlib.sha256()
    sha256.update(text.encode('utf-8'))
    encrypted_text = sha256.hexdigest()
    return encrypted_text

# 示例用法
text = "Hello, World!"
encrypted_text = sha256_encrypt(text)
print("加密前的文本:", text)
print("加密后的文本:", encrypted_text)

Base64编码和解码:

import base64

def base64_encode(text):
    encoded_text = base64.b64encode(text.encode('utf-8')).decode('utf-8')
    return encoded_text

def base64_decode(encoded_text):
    decoded_text = base64.b64decode(encoded_text).decode('utf-8')
    return decoded_text

# 示例用法
text = "Hello, World!"
encoded_text = base64_encode(text)
decoded_text = base64_decode(encoded_text)
print("原始文本:", text)
print("编码后的文本:", encoded_text)
print("解码后的文本:", decoded_text)

对称加密AES:

注意:pip install Crypto之后,在环境的文件夹的三方包文件夹找到crypto文件夹将首字母改成大写,改为Crypto即可识别

# 方式一
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
from Crypto.Random import get_random_bytes

def aes_encrypt(text, key):
    iv = get_random_bytes(AES.block_size)
    cipher = AES.new(key, AES.MODE_CBC, iv)
    encrypted_text = cipher.encrypt(pad(text.encode('utf-8'), AES.block_size))
    return iv + encrypted_text

def aes_decrypt(encrypted_text, key):
    iv = encrypted_text[:AES.block_size]
    cipher = AES.new(key, AES.MODE_CBC, iv)
    decrypted_text = unpad(cipher.decrypt(encrypted_text[AES.block_size:]), AES.block_size).decode('utf-8')
    return decrypted_text

# 示例用法
text = "Hello, World!"
key = get_random_bytes(16)  # 16字节的随机密钥
encrypted_text = aes_encrypt(text, key)
decrypted_text = aes_decrypt(encrypted_text, key)
print("原始文本:", text)
print("加密后的文本:", encrypted_text)
print("解密后的文本:", decrypted_text)

# 方式二:
import pyaes
import binascii


def encrypt_AES_CTR(data, k, iv):
    ctr = pyaes.Counter(initial_value=int(binascii.hexlify(iv), 16))
    aes = pyaes.AESModeOfOperationCTR(k, ctr)
    return aes.encrypt(data)


def decrypt_AES_CTR(ciphertext, key, iv):
    ctr = pyaes.Counter(initial_value=int(binascii.hexlify(iv), 16))
    aes = pyaes.AESModeOfOperationCTR(key, ctr)
    data = bytes.fromhex(ciphertext)
    return aes.encrypt(data)


plaintext = '加密字段'
key = '自定义加密key'
iv = '偏移量'
ciphertext = encrypt_AES_CTR(plaintext.encode(), key.encode(), iv.encode())

Caesar加密(凯撒密码):

def caesar_encrypt(text, key):
    encrypted_text = ""
    for char in text:
        if char.isalpha():
            encrypted_text += chr((ord(char) - ord('a') + key) % 26 + ord('a'))
        else:
            encrypted_text += char
    return encrypted_text

def caesar_decrypt(text, key):
    decrypted_text = ""
    for char in text:
        if char.isalpha():
            decrypted_text += chr((ord(char) - ord('a') - key) % 26 + ord('a'))
        else:
            decrypted_text += char
    return decrypted_text

# 示例用法
text = "hello"
key = 3
encrypted_text = caesar_encrypt(text, key)
decrypted_text = caesar_decrypt(encrypted_text, key)
print("加密后:", encrypted_text)
print("解密后:", decrypted_text)

这只是一小部分常见的加密和解密算法,Python还提供了很多其他的加密库和工具。具体使用哪种算法取决于你的需求和使用场景。

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是一个简单的使用 python-gnupg 模块进行加密和解密的示例代码: ```python import gnupg # 创建一个 GPG 对象 gpg = gnupg.GPG() # 导入公钥 with open('public_key.asc', 'rb') as f: public_key = f.read() import_result = gpg.import_keys(public_key) print(import_result.results) # 加密数据 data = b'Hello, world!' encrypted_data = gpg.encrypt(data, import_result.fingerprints[0], always_trust=True) print(encrypted_data.data) # 解密数据 decrypted_data = gpg.decrypt(encrypted_data.data, passphrase='your_passphrase') print(decrypted_data.data) ``` 在上面的示例代码中,我们首先通过 `gnupg.GPG()` 创建了一个 GPG 对象。然后,我们通过读取公钥文件的方式导入了公钥,并使用 `gpg.import_keys()` 方法将公钥导入到 GPG 对象中。接着,我们使用 `gpg.encrypt()` 方法对数据进行加密,并将加密结果打印出来。最后,我们使用 `gpg.decrypt()` 方法对加密数据进行解密,并将解密结果打印出来。 需要注意的是,上述示例中的 `public_key.asc` 文件是一个 ASCII 编码的公钥文件,可以通过 `gpg --export --armor <key-id>` 命令导出。`--armor` 选项表示将输出结果转换为 ASCII 编码的文本格式。`<key-id>` 是要导出公钥的密钥 ID。 另外,需要在使用 `gpg.encrypt()` 方法时指定接收者的指纹(即密钥 ID),这里我们使用导入公钥时获取的第一个指纹。在使用 `gpg.decrypt()` 方法时,需要提供解密密码(即私钥密码)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值