Python rsa加密与填充

加密常见的填充模式有三种:RSA_PKCS1_PADDING,RSA_PKCS1_OAEP_PADDING,RSA_NO_PADDING,还有Java常用的加密算法RSA/ECB/OAEPWithSHA256AndMGF1Padding;其中前三种都是比较常见的,这里主要演示最后一种。

from cryptography.hazmat.primitives import  serialization
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives import hashes
from base64 import b64encode
with open('ca-pubkey.pem', 'rb') as f:
    content = f.read()
with open('cakey.pem', 'rb') as fp:
    pri = fp.read()
key = serialization.load_pem_public_key(content)
enc_data = key.encrypt(b'123456', padding=padding.OAEP(mgf=padding.MGF1(hashes.SHA256()),algorithm=hashes.SHA256(), label=None))
print(b64encode(enc_data))  #以base64输出
# RSA/ECB/OAEPWithSHA256AndMGF1Padding
pri_key=serialization.load_pem_private_key(pri,password=None)
src_text = pri_key.decrypt(enc_data,padding=padding.OAEP(mgf=padding.MGF1(hashes.SHA256()),algorithm=hashes.SHA256(), label=None))
print(src_text)

输出示例
在这里插入图片描述

你可能感兴趣的:(安全)