python 相当于 java RSAIO.save

python equivalent of the java RSAIO.save

我正在使用一些 java 代码片段作为参考来处理我正在制作的 python 应用程序 (2.7.9)。我知道 java 代码部分功能正常,但我的 python 版本不是。

我正在尝试将生成的 RSA 密钥对(2048 位)保存到磁盘上的文件中。

我可以通过调用生成密钥对:

def generate_key_pair():
    """Generates a 2048 bit RSA key pair"""
    return RSA.generate(2048)

以 "required" 格式将它们保存到磁盘是我遇到问题的地方。 java 程序使用以下语句执行此操作:

RSAIO.save(rsaDirectory, keyPair);

什么是等效的 Python 语句(我正在使用 pycrypto 模块)? (如果可能,请将密码学的答案限制为 pycrypto 和标准 python 库模块...)

在Java和Python之间是否有一种等价modules/methods的作弊sheet?

编辑:我尝试按照建议使用 Saving RSA keys to a file, using pycrypto,但我的文件最终生成(私钥示例):

-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEA2B6XEIH24P+pA+bylZIt6KPErRFMbP5BZrTNQiyuhAMG1ku5
psob8SZQsI2ApaB3HwGaebd9KsK7Y+fdBeRiIFN37DWfyxS7o7xU4OloReNm9cdl
r92Axo2h8itQXaSlTvUhJJiv1g0rWclrsoJPKGH/RNwhV8EdoLi1ln4hw3bIOQ2H
N8Gto/YiiXujWaf5+Y2ocQNSc+TP/6AKy1RN1uh80uqQAmtN1WjW35luLrGWm0pt

<more individual lines Stack overflow wont let me paste as code>

ZnWmC5IkLbqw3VzQRCOO3aj0v51+HjtYoPF3U5VlCUTzcX3Jyt3XOoSGwEtWCsvk
1KGYv7ke+0b8wW3n6I+hwRA0Swi9fRzVuS2G/XXfGZgKDv8mksg8uAk=
-----END RSA PRIVATE KEY-----

而 Java 版本会产生如下内容:

`MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCbo8t/mbeRYJTF80pyeU8QSDH15V>pS6AVaNWG2RxmFnx3KUm9kv/Acm9m5IFxpktfB2AE+LUhKaedk3JZP/S7Oe+45VpweOyR1bHo16QCs>d4+7ulm6zad2fzJs/fPYe0l4QFdrlj59DJNEzppdjY8pvdXL2PySj42CsTj7clJ2toHOvuxXnFwzFg>j64CFDYiXVo+FjFPi4gKEZ8Xe/5VvdrzX7TVfpXr1fpVBEP0nGD8mISoO/XO2pKYLs1hLfvoVW5/Ii>zRbShiF7cKHZgirEd7Je4JKe7oWX9HPTquaCnQGtdIHfsq7TO0Cvtami975N10m6GerVwwn9hUdEhw>XfAgMBAAECggEARFQwryBpOuXP6ufYs1EWqOtJI89BTEyYrPXqo/+q8MLebUirpuutGqJBf8j5SVAy>cOPIB+gRaLn94IYHZ66bsgMunvWrLIqCgxrQvIJCzXTgIWa6pgxLjPZiyP7k4xGdO7Hjr1QSswumS/>r4QkI3q/evuQLWP/HOCqaLgbi7A2qEj3rZhsvyqMWIy45Uv82XVMZE4Ykd5+EL6knHqtZfx1BZmjJE>0qBZjYgUVzG6lTZT23s9JOv7DdfGr4xJVoYQjcMN5Lq6U8ifEZ8RuCD77a18MU5YT6nGInBpj0vmCu>wAS/90d9Ky66lHyTi/g1NqfUDsvcCUCNoM6rZtiBY+wQKBgQDcHl7oHA5vh0g6nDgUJv0oVYD16j4f>s1Ds/x3eC0lT9UpOxxXt4plu9oRsbe+Q5GphpR96sAQf+lvvaToFnOeln+/kQR+badezplrR7OJCMf>VpmltEJwBt/gVUO9WOo+AyQ2Zyg23dBAhjU/MJXMOezJH2/xJw8A3f8JJ6iK6JpwKBgQC1ArNJ3jAz>4W/DU7zwnqtS95APYl00ntafiiMyvNkmyPeGxIAG3UMdq8Y5pse3ZWSNECBjbAN+en7z7xC+eZ4v3Y>Q/NiCpA12UEmNVW+QZRYPMSLcwhO//gT9X+HKaruv5YAVM+TF4PlhPeUubJgolaC9YpntgnZVd09UC>NBI5CQKBgQDUNzOo8+O3AuZQG2y1gSFxUX4TmNJsHaVX2F4jRR5dI4+Qg8BQqLbklCb3osXlG1K08U>14K1rOucEJAJo/7xYmSBwwI9klLNYZDblhytAYobHJLlfvTOrNIKpim405CCWOUAzlOnEhNFIh8T3P>OPAgmXngd+p/l/DIhleyazRa4QKBgQCSvBCpNfPvarXWKuDEUmviAwwGXJ/gE08635lu/QYv2cRGvK>5oYh+RQvmbLKdD9W7Qp50J27rtYdHeXxM8xYxFkxYsw+0v9al7aniZ7rb3AZI5HU1biLihcJ3v61jE>Kj7i1kMVxgCjUC74pgRzTh/1eQLAo5zqknROLnXDpoCLOQKBgQDIsLoVYLZaCkwjK29y+8UonAVjNy>5Ld+1mTIPdOObPTS4xFnOFBVl+jSk1mSmsZ71X1RRz8DNMsi+ErHQwrjjdN0UNTxAyY9wdS5aPC7pP>TJuKuDLzfGLZzhz8rqiauAuXmxKE19qTjaegIs7UFpvbDsAP88AMHkPtWK7TCKuriw==`

我已经尝试了各种不同的 format= 语句(PEM、DER、OpenSSH)并且 none 产生相同的输出。

为了获得我需要的格式,我认为最好的方法是简单地删除换行符和 header/footer;所以我最终还是使用了这个:

Saving RSA keys to a file, using pycrypto

其他有用的页面: https://www.dlitz.net/software/pycrypto/api/current/Crypto.PublicKey.RSA-module.html