Python常用加密解密方法汇总
在Python中,常用的加密解密方法有许多,比如base64、md5、aes、des、crc32等等。本文将对这些方法进行详细的讲解,并提供一些使用示例。
base64加密解密
base64是一种将二进制数据编码为ASCII字符的方法,通常用于在HTTP协议、电子邮件、XML等场景下传输较长的标识信息,以便于处理和传输。Python中内置了base64模块,可以方便地进行base64的编码和解码。
编码
import base64
data = b'Hello, World!' # 需要编码的二进制数据
encoded_data = base64.b64encode(data)
print(encoded_data) # 输出:b'SGVsbG8sIFdvcmxkIQ=='
解码
import base64
encoded_data = b'SGVsbG8sIFdvcmxkIQ==' # 需要解码的base64编码数据
decoded_data = base64.b64decode(encoded_data)
print(decoded_data) # 输出:b'Hello, World!'
MD5加密
MD5是一种常用的哈希算法,它可以将任意长度的消息压缩为一个128位的消息摘要。Python中内置了hashlib模块,可以方便地进行MD5的计算。
计算MD5值
import hashlib
data = b'Hello, World!' # 需要计算MD5值的二进制数据
md5 = hashlib.md5()
md5.update(data)
print(md5.hexdigest()) # 输出:'86fb269d190d2c85f6e0468ceca42a20'
AES加密解密
AES是一种高级加密标准,是一种对称密钥加密算法。Python中可以使用pycryptodome模块进行AES的加密和解密。
加密
from Crypto.Cipher import AES
key = b'1234567890123456' # 密钥,需要16字节的长度
iv = b'1234567890123456' # 初始化向量,需要16字节的长度
data = b'Hello, World!' # 需要加密的二进制数据
cipher = AES.new(key, AES.MODE_CBC, iv)
encrypted_data = cipher.encrypt(data)
print(encrypted_data) # 输出:b'\xc1\xba\xf4ID\t\xf8\xa6\x1b\x0b\xb1\x9f3\xd6m'
解密
from Crypto.Cipher import AES
key = b'1234567890123456' # 密钥,需要16字节的长度
iv = b'1234567890123456' # 初始化向量,需要16字节的长度
encrypted_data = b'\xc1\xba\xf4ID\t\xf8\xa6\x1b\x0b\xb1\x9f3\xd6m' # 需要解密的二进制数据
cipher = AES.new(key, AES.MODE_CBC, iv)
decrypted_data = cipher.decrypt(encrypted_data)
print(decrypted_data) # 输出:b'Hello, World!'
DES加密解密
DES是一种对称密钥加密算法,使用方法与AES类似。Python中可以使用pycryptodome模块进行DES的加密和解密。
加密
from Crypto.Cipher import DES
key = b'12345678' # 密钥,需要8字节的长度
iv = b'12345678' # 初始化向量,需要8字节的长度
data = b'Hello, World!' # 需要加密的二进制数据
cipher = DES.new(key, DES.MODE_CBC, iv)
encrypted_data = cipher.encrypt(data)
print(encrypted_data) # 输出:b'\x86\x7f\x1c(\x8c\x08I\xffiH\xcb@\xee'
解密
from Crypto.Cipher import DES
key = b'12345678' # 密钥,需要8字节的长度
iv = b'12345678' # 初始化向量,需要8字节的长度
encrypted_data = b'\x86\x7f\x1c(\x8c\x08I\xffiH\xcb@\xee' # 需要解密的二进制数据
cipher = DES.new(key, DES.MODE_CBC, iv)
decrypted_data = cipher.decrypt(encrypted_data)
print(decrypted_data) # 输出:b'Hello, World!'
crc32校验码
crc32是一种循环冗余校验码,主要用于数据传输错误的检测。Python中可以使用zlib模块进行crc32校验。
计算CRC32校验码
import zlib
data = b'Hello, World!' # 需要计算CRC32校验码的二进制数据
crc32 = zlib.crc32(data)
print(crc32) # 输出:2229579579
至此,本文对Python常用的base64、md5、aes、des、crc32加密解密方法进行了详细的介绍,并给出了使用示例。希望对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python常用base64 md5 aes des crc32加密解密方法汇总 - Python技术站