Frage

Wenn Sie die folgende Funktion aufrufen:

byte[] bytes = rsa.Encrypt(System.Text.UTF8Encoding.UTF8.GetBytes(stringToEncrypt), true);

Ich bekomme jetzt den Fehler: Schlechte Länge.

Bei einer kleineren Schnur, die es funktioniert, sind alle Ideen, was das Problem sein könnte, die Zeichenfolge, die ich übergeben kann, unter 200 Zeichen.

War es hilfreich?

Lösung

Die RSA -Verschlüsselung ist nur für kleine Datenmengen, die Datenmenge, die Sie verschlüsseln können 117 Bytes höchstens mit einem 2048 RSA -Schlüssel können Sie 245 Bytes verschlüsseln.

Dafür gibt es einen guten Grund, eine asymmetrische Verschlüsselung ist rechenintensiv. Wenn Sie große Datenmengen verschlüsseln möchten, sollten Sie eine symmetrische Verschlüsselung verwenden. Aber was ist, wenn Sie eine Nicht-Repudiation wünschen? Nun, was Sie dann tun, ist beides zu verwenden. Sie erstellen einen symmetrischen Schlüssel und tauschen ihn mit asymmetrischer Verschlüsselung aus, die dann sicher ausgetauscht werden, um Ihre großen Datenmengen zu verschlüsseln. Dies ist, was SSL und WS-Secure unter den Abdeckungen verwenden.

Andere Tipps

Für zukünftige Suchanfragen zu Ausnahmen von RSA schlechte Länge ...

Sie können die maximale Anzahl von Bytes berechnen, die mit einer bestimmten Schlüsselgröße mit Folgendem verschlüsselt werden können:

((KeySize - 384) / 8) + 37

Wenn der Parameter optimal asymmetrischer Verschlüsselung (OAEP) jedoch wie im ursprünglichen Post ist, kann Folgendes verwendet werden, um die maximalen Bytes zu berechnen:

((KeySize - 384) / 8) + 7

Die rechtlichen Schlüsselgrößen betragen 384 bis 16384 mit einer Sprunggröße von 8.

Wie oben erläutert, besteht die Lösung für die Ausnahmen von "schlechter Länge" darin, die Verwendung der symmetrischen und asymmetrischen Verschlüsselung zu hybridisieren, so dass die Größe des von Ihnen verschlüsslosen Textgröße nicht durch die Schlüsselgröße eingeschränkt wird. Sie verwenden im Grunde genommen die RSA -Verschlüsselung, um das zufällige asymmetrisch zu verschlüsseln Schlüssel .

Zur Verschlüsselung:

  1. Generieren Sie einen zufälligen Schlüssel der Länge, die für symmetrische Verschlüsselungstechniken wie AES oder Rijndael erforderlich sind.

  2. Verschlüsseln Sie Ihren Text/Ihre Daten symmetrisch mithilfe von AES/Rijndael mit dem in Schritt 1 generierten zufälligen Schlüssel.

  3. Mit RSA verschlüsseln asymmetrisch den in Schritt 1 generierten zufälligen Taste.

Zur Entschlüsselung:

  1. Entschlüsseln Sie zuerst die AES/Rijndael-generierte Zufallsschlüssel mit Ihrem privaten RSA-Schlüssel.

  2. Dann entschlüsseln

Für eine Demonstration möchten Sie sich in C#in C#ansehen.

http://www.technical-recipes.com/2013/using-rsa-t-crypt-large-data-files-in-c/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top