class="markdown_views prism-dracula">
1.安装cryptography
sudo pip3 install cryptography
2.代码
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization
pub_key="EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443"
def populate_public_key(data):
n = int(data,16)
e = 65537
key = rsa.RSAPublicNumbers(e, n).public_key(default_backend())
return key
def save_pub_key(pub_key, pem_name):
pem = pub_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)
with open(pem_name, 'w+') as f:
f.writelines(pem.decode())
return
if __name__ == '__main__':
pub_key = populate_public_key(data=pub_key)
pem_file = r'pub_key.pem'
save_pub_key(pub_key, pem_file)
结果:
新浪微博的公钥:
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrKjhWhmGIf6GAvdtcq9XyHHv9
WcCQyy0kWoesJTBiiCcpKT5VBjUFCOf5qju3f0MzIxSQ+RX21jxV/i8IpJs1P0RK
05k8rMAtt4Sru45CqbG7
SVknrEp5mzGB1kQkQwIDAQAB
-----END PUBLIC KEY-----