2016-04-14 11 views
3

Ich bin neu in der Verschlüsselung mit Python und frage mich, welche Padding ist die Standardeinstellung für seine RSA module?Welche Art von Padding verwendet Python für das RSA-Modul?

erhalte ich den Schlüssel und entschlüsselt die Daten von:

import rsa 

(pub, priv) = rsa.newkeys(512) 
# receive the encrypted data here 
data = rsa.decrypt(encrypt_data, priv) 

Und was mich betrifft, die Polsterung Methoden umfassen: RSA_PKCS1_PADDING, RSA_PKCS1_OAEP_PADDING, RSA_SSLV23_PADDING, RSA_NO_PADDING.

+0

Es ist sehr wahrscheinlich, dass es 'RSA_PKCS1_PADDING' ist. Könnten Sie eine hexadezimale oder Base-64-codierte Zeichenfolge posten, die mit dem RSA-Modul verschlüsselt wurde? Es ist ziemlich einfach zu überprüfen (mit RSA_NO_PADDING). –

+0

@MaartenBodewes Die verschlüsselten Daten, die ich bekam, sind "\ xab \ xe2B \ xe0Bt (~ T \ xcd \ x1d> iwd \ x16 <" \ xff \ t \ xa5_ | $ m9 \ xdd \ xed * ee \ xc1 \ x924c% \ xcdHg \ xc1h \ xb8 \ xc7 & xf1 \ xb7 \ xd2 \ x8a \ xd1 \ x1c \ xab \ x7f \ xe8L \ x17 \ x05m \ x9dDC \ x10I \ xab ". Der Code, den ich verwendet habe, kann unter https: // stuvel gefunden werden .eu/python-rsa-doc/usage.html (Abschnitt 5.3) Wie kann ich es anhand dieser Ausgabe herausfinden? – zzy

+0

@ArtjomB Ja, ich glaube, das ist das Modul, das ich untersuche. – zzy

Antwort

4

Die rsa module (derzeit v3.4) unterstützt nur PKCS # 1 v1.5 Padding für die Verschlüsselung (zufälliger Typ 2 Padding) und Signieren.

In rsa/__init__.py können Sie sehen, dass rsa.encrypt() tatsächlich rsa.pkcs1.encrypt() sind die rsa.pkcs1._pad_for_encryption() intern verwendet, die eine Implementierung des zuvor PKCS # 1 v1.5 padding erwähnt ist.

Bitte beachten Sie, dass diese Polsterung heutzutage (ref) nicht mehr verwendet werden sollte. OAEP wird für die Verschlüsselung und PSS zum Signieren empfohlen, beide aus PKCS # 1 v2.0. PyCrypto unterstützt OAEP/PSS und PKCS # 1 v1.5 Paddings.

+0

Vielen Dank viel, genau das will ich. – zzy

Verwandte Themen