1. Crypto库
这个库是实现各种算法和协议的密码模块的集合,包含Cipher,Hash,Protocol,PublicKey,Signature,Util这些子包;
1. Cipher子包
实现了分组加密(AES,DES,DES3,CAST,Blowfish,RC2),流加密(RC4,XOR)与公钥加密(RSA PKCS#1与PKCS#1 OAEP,这两个区别在于加密前对数据的填充不同);如下是文档给出的例子:
from Crypto.Cipher import AES
from Crypto import Random
key = b'Sixteen byte key'
iv = Random.new().read(AES.block_size)
cipher = AES.new(key, AES.MODE_CFB, iv)
msg = iv + cipher.encrypt(b'Attack at dawn')
print msg.encode('hex')
有时在解RSA的题时,已经知道了密钥,解出来的flag却是乱码,也许是加了一些填充如OAEP,PKCS#1导致的;这时就需要使用对应的秘钥解密;如下是一个PKCS#1填充的例子,加密的明文(字节)长度必须严格小于密钥(字节)长度-11
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
<