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