Python对字符串加密解密的方法有很多,这里我们介绍两种常用的方法:MD5加密和AES加密。
MD5加密
MD5(Message-Digest Algorithm 5)是一种广泛使用的密码散列函数,可以将任意长度的数据映射为一个128位的固定长度的哈希值,由于MD5具有不可逆性,所以通常用于验证数据的完整性,在Python中,我们可以使用hashlib
库来实现MD5加密。
1、MD5加密原理
MD5加密的基本原理是将输入的数据分割成若干个512位的数据块,然后对每个数据块进行处理,最后将处理后的数据块拼接成一个128位的哈希值,具体过程如下:
MD5加密算法主要包括四个步骤: 1、对输入数据进行填充,使其长度满足特定条件; 2、将填充后的数据分成512位的数据块; 3、对每个数据块进行64轮的处理; 4、将处理后的数据块拼接成一个128位的哈希值。
2、MD5加密示例代码
import hashlib def md5_encrypt(text): md5 = hashlib.md5() md5.update(text.encode('utf-8')) return md5.hexdigest() text = "Hello, World!" encrypted_text = md5_encrypt(text) print("加密后的字符串:", encrypted_text)
AES加密
AES(Advanced Encryption Standard)是一种对称加密算法,它使用相同的密钥进行加密和解密,与非对称加密算法相比,AES加密速度较快,但密钥管理较为复杂,在Python中,我们可以使用pycryptodome
库来实现AES加密。
1、AES加密原理
AES加密的基本原理是将输入的数据分为若干个128位的数据块,然后对每个数据块进行10轮的置换、扩展和混淆操作,最后将处理后的数据块拼接成一个64位的分组,具体过程如下:
AES加密算法主要包括以下几个步骤: 1、每4个字节为一组,对每组数据进行初始轮操作(包括异或、移位等); 2、对每组数据进行10轮扩展置换、S盒替换和P盒异或操作; 3、对每组数据进行最后一轮固定的加轮操作; 4、将所有处理后的数据块拼接成一个64位的分组。
2、AES加密示例代码
from Crypto.Cipher import AES from Crypto.Random import get_random_bytes from Crypto.Util.Padding import pad, unpad def aes_encrypt(plaintext, key): cipher = AES.new(key, AES.MODE_CBC) ct_bytes = cipher.encrypt(pad(plaintext.encode('utf-8'), AES.block_size)) iv = cipher.iv return iv + ct_bytes key = get_random_bytes(16) 生成一个16字节的密钥 plaintext = "Hello, World!" encrypted_text = aes_encrypt(plaintext, key) print("加密后的密文:", encrypted_text)
相关问题与解答
1、如何使用AES解密?
要使用AES解密,首先需要知道密钥、初始向量(IV)和密文,然后使用Crypto.Cipher.AES
模块中的new()
函数创建一个新的解密对象,接着调用解密对象的decrypt()
方法进行解密,解密后的明文还需要使用unpad()
函数去除填充,示例代码如下:
from Crypto.Cipher import AES from Crypto.Util.Padding import unpad import binascii def aes_decrypt(ciphertext, key): iv = ciphertext[:16] 提取初始向量(IV) ct = ciphertext[16:] 提取密文(去掉前16个字节的IV) cipher = AES.new(key, AES.MODE_CBC, iv=iv) 创建解密对象,传入密钥和初始向量(IV)参数之一即可(因为CBC模式需要两个参数) pt = unpad(cipher.decrypt(ct), AES.block_size) 解密并去除填充后得到明文(原始数据长度应为16的倍数) return binascii.hexlify(pt).decode('utf-8') 将明文转换为十六进制字符串并返回(方便查看和传输)
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/279762.html