【发布时间】:2015-01-16 05:34:00
【问题描述】:
出于学术原因,我成功地分解了一个小尺寸的 RSA 公钥并提取了 n、p、q、e,然后计算了 d。我的问题是,有没有办法使用 python 为私钥(d,n)生成一个 .pem 私钥文件,以便轻松验证加密/解密是否顺利?
【问题讨论】:
出于学术原因,我成功地分解了一个小尺寸的 RSA 公钥并提取了 n、p、q、e,然后计算了 d。我的问题是,有没有办法使用 python 为私钥(d,n)生成一个 .pem 私钥文件,以便轻松验证加密/解密是否顺利?
【问题讨论】:
pyasn1 和 pyasn1-modules 包一起为您提供用于存储私钥信息的数据结构 (PKCS#8)。上述包还可以序列化/反序列化私钥数据结构(连同 base64 编码)构成 PEM 文件。
查看 pyasn1-modules/tools/pkcs8dump.py 工具和pyasn1 documentation 了解更多信息。
【讨论】:
迟到的答案,但this script 应该可以帮助您实现目标。以下是作者对此的评价:
简介
这是一个获取 JWKS 结果的 Python 脚本,对于每个 jwk, 使用 modulus 和 exponent 生成 PEM 编码的公共 key,适合在jwt.io等工具中使用
这里是一个使用这个工具来获取 PEM 编码的公共的例子 “example.okta.com” Okta org 的键:
./jwks_to_pem.py --org example.okta.com Fetching JWKS from example.okta.com PEM for KID 're7eOFV6SiygSbCyYHGGdERFCJ_EoNpi9Duv0FIxllo' -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgVdVgO4RogxtWt4XN2vO 9SG3Ekt6Qh+k6Io28dTNjEWuNxCYCtQI2dFtFs2y7OyLxQ2e3491XTDVRxtUx/Kl RhQCcGDtLM5vTRWtGo39heg9dLWv7mqlk+jVkJrK2vAO+0bfl0x2Ouov4VS4Ixwx lJfaec8v0cw+xjcJc29Y28WNFYhW/wpf1uEHYAf/pQ9q7S25rhK5yPv23101P7pA bCNDyFB6PYLuXxqkE7dq7rIZXfw5xgNQBRugBrSmUEjoCFs3XowAXCk2gWhM/1Lg mSqaaAh/Cu5vvzM0wYoaEi598LWYmtgurQ3C2Nenu8HVjI+zCSg8v7VrcTa1MHua owIDAQAB -----END PUBLIC KEY----- PEM for KID 'kTP2cLZY0qA2qfnedNEgx6rs6yqIEdf4DQYYV2m4KPQ' -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjKb91FLaoZe9/5NEMZrO 1eDn4hdrhtjrvsy+qO1QIbbdhRXJIJoE+qpHmgmq1gK28OZCV51xUAwk8ugw5p7/ m2wIarykHtXuBmhcFPkWez6N/yX30qvdOPPKUGqd05AoGcrzAW6fV07CRROU+5g1 RnTdNasLEMYaq0xPlmCMDjb3usyiafGyyrwg4+tndOTry4uMtF7LeTVLZo9Tnn2x dJiytWWh+Rq5/KAn1mJ2GgwG8tp8o7SRf65c0LYQenN1d6vXX/Iimq/mg//B5CHP zIaUrZfoL+2sbRIyQ5AePlDyn8Neg6sIsV9nTkPAcYvvQsS+/8xnfNq6np0zKbua dQIDAQAB -----END PUBLIC KEY-----
【讨论】: