0

I am using some java code snippets as a reference to work on a python application (2.7.9) I am making. I know the java code parts function correctly, but my python versions are not.

I am trying to save a generated RSA key pair (2048 bit) to a file on disk.

I can generate the key pair by calling:

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

to save them to disk in the "required" format is where I am having issues. The java program does it with this statement:

RSAIO.save(rsaDirectory, keyPair);

What is the equivalent Python statement (I am using the pycrypto module)? (If possible, please limit the answers to for cryptography to pycrypto and standard python library modules...)

Is there a sort of cheat sheet of equivalenent modules/methods between Java and Python?

EDIT: I tried using Saving RSA keys to a file, using pycrypto as suggested, but my file ends up producing (private key example):

-----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-----

Whereas the Java version will produce something like:

`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==`

I have tried all sorts of different format= statements (PEM, DER, OpenSSH) and none produce the same output.

Community
  • 1
  • 1
  • 2
    This might help http://stackoverflow.com/questions/9197507/saving-rsa-keys-to-a-file-using-pycrypto ... I am not aware of any cheat sheet, but got this from googling pycrypto save rsa key – J Richard Snape Sep 14 '15 at 23:07
  • This is what i had tried and where my code is failing versus the Java version. –  Sep 15 '15 at 00:22

1 Answers1

1

To get it in the format I needed, I think the best way is to simply strip out the newlines and the header/footer; so I ended up using this after all:

Saving RSA keys to a file, using pycrypto

Other helpful page: https://www.dlitz.net/software/pycrypto/api/current/Crypto.PublicKey.RSA-module.html

Community
  • 1
  • 1