java - python 相当于 java RSAIO.save

标签 java python python-2.7 rsa pycrypto

我正在使用一些java代码片段作为我正在制作的python应用程序(2.7.9)的引用。我知道 java 代码部分可以正常工作,但我的 python 版本却不能。

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

我可以通过调用生成 key 对:

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

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

RSAIO.save(rsaDirectory, keyPair);

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

Java 和 Python 之间是否存在等效模块/方法的备忘单?

编辑:我尝试使用 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)并且没有一个生成相同的输出。

最佳答案

为了获得我需要的格式,我认为最好的方法是简单地去掉换行符和页眉/页脚;所以我最终还是使用了这个:

Saving RSA keys to a file, using pycrypto

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

关于java - python 相当于 java RSAIO.save,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32575102/

相关文章:

java - 计划任务不会在夜间的特定时间运行

python - 当使用 genfromtxt 指定 dtype 时,二维数组变为一维 - 如何防止这种情况?

python - Windows 7 上的 numpy 安装

java - Hibernate 映射列表 - 索引

java - 密码验证服务

python 3 : unsupported operand type(s) for +: 'float' and 'str'

python - 映射是否可以转换

python - 为用户输入递归调用函数

python-2.7 - PySpark - 从文本文件创建数据框

java - Thymeleaf - 在 JAVA 中传递模型