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还提供了很多其他的加密库和工具。具体使用哪种算法取决于你的需求和使用场景。

作者:我姓曹,谢谢

物联沃分享整理
物联沃-IOTWORD物联网 » Python常见加密解密技巧大揭秘

发表回复