rsa密钥的生成、主要构成、序列化及反序列化
import rsa
# 生成密钥(1024太长了,就用16意思一下)
public, private = rsa.newkeys(16)
print(private.d, private.n)
print(public.e, public.n)
'''
输出:随机生成,所以会不一样
PublicKey(55973, 65537)对于公钥来说,主要是由两个数构成 e, n
PrivateKey(55973, 65537, 52973, 251, 223)对于私钥,由多个数据构成,最重要的部分是d, n
'''
# 序列化到本地
'''
-----BEGIN RSA PUBLIC KEY-----
MAoCAwCHEwIDAQAB
-----END RSA PUBLIC KEY-----
'''
pub = public.save_pkcs1()
with open('public.pem','wb')as f:
f.write(pub)
'''
-----BEGIN RSA PRIVATE KEY-----
MCMCAQACAwCHEwIDAQABAgJ3CQICAOUCAgCXAgIAlQIBFwIBWw==
-----END RSA PRIVATE KEY-----
'''
pri = private.save_pkcs1()
with open('private.pem','wb')as f:
f.write(pri)
# 从本地读取pem
with open('public.pem','rb')as f:
pub_key = rsa.PublicKey.load_pkcs1(f.read())
with open("private.pem", 'rb') as f:
pri_key = rsa.PrivateKey.load_pkcs1(f.read())