rsa-非对称加密解密
import rsa
from binascii import b2a_hex, a2b_hex
pub, priv = rsa.newkeys(256)
print(pub, priv)
# 公钥加密
encrypt = rsa.encrypt("hello-蜗牛".encode(),pub)
print(encrypt)
encstr = b2a_hex(encrypt).decode()
print(encstr)
# 私钥解密
decrypt=rsa.decrypt(a2b_hec(encstr),priv)
print(decrypt)
提示:
b2a_hex()函数:把括号内的整个字节转为16进制
a2b_hex()函数:把括号内的字节转换回去
AES-对称加密
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex
source = 'hello-蜗牛'
# 如果source不是16的倍数用空格补全
if len(source.encode('utf-8')) % 16:
add = 16 - (len(source.encode('utf-8')))
else:
add = 0
source = source + ('\0' * add)
print(source)
# 定义秘钥和AES类型和偏移量,秘钥和偏移量必须是16个字节,24个字节,36个字节
key = 'todayiswonderful-1234567'
mode = AES.MOOD_CBC
iv = b'1234567890ABCDEF'
cryptos = AES.new(key, mode, iv)
# 进行加密
cipher = cryptos.encrypt(source.encode())
print(cipher)
# 便于传播可以转换为16进制
print(b2a_hex(cipher).decode())
# 解密
source = '加密内容'
dest = cryptos.decrypt(a2b_hex(source))
print(dest.decode().rstrip('\0'))
补充
pip list |grep cry ;查看Python支持的含cry的库
AES,Python支持的库为pycryptodeme