Java/JCE: Entschlüsselung "lange" Nachricht wird verschlüsselt mit RSA
Habe ich eine Nachricht enthielt, in ein byte [] verschlüsselt, mit "RSA/ECB/PKCS1Padding". Um es zu entschlüsseln, ich erstelle eine Chiffre c und leiten es mit
c = Cipher.getInstance("RSA/ECB/PKCS1Padding");
Bis jetzt habe ich nur entschlüsselt, kleine Nachrichten, mit dem doFinal() Methode, die eine byte[] mit der entschlüsselten bytes.
c.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptetBytes = c.doFinal(encryptedBytes);
Aber in diesem Fall sind die Daten größer ist (ca 500 Bytes), und die doFinal()-Methode wirft eine exception (javax.crypto.IllegalBlockSizeException: die Daten dürfen nicht länger als 128 Byte). Ich denke, ich muss an die update()- Methode, aber ich kann nicht herausfinden, wie man es richtig zu arbeiten. Wie wird das gemacht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, mit RSA-Verschlüsselung für nichts, aber wichtige Verkehrs missbraucht wird.
Erstellen Sie einen neuen Schlüssel für eine symmetrische Verschlüsselung und verschlüsseln Sie Ihre bulk-Daten. Dann verschlüsseln Sie den Schlüssel mit RSA. Senden Sie den symmetrisch verschlüsselten cipher-text zusammen mit den asymmetrisch verschlüsselten content encryption key, um Ihre Empfänger.
Mit RSA können Sie nur verschlüsseln/entschlüsseln block mit einer Größe von bis zu Ihrem key-Länge minus-Polsterung Länge. Wenn Sie Daten haben, die länger als Ihr Schlüssel, vielleicht ist es nur zusammengeführt in einem array, so dass Sie sich aufspalten sollten Sie Sie in Stücke mit einer Größe von deinem key (128 bytes schlägt 1024-Schlüssel (mit keine Polsterung, ich bin mir nicht sicher, ob es überhaupt möglich ist). Mit update() ist hier nicht der Fall.
Einfach, müssen Sie wissen, wie das array erstellt wurde.
Generell RSA sollte nicht verwendet werden, um die Verschlüsselung großer Datenmengen, wie es ist sehr zeitaufwendig. Sollte verwendet werden, um zu verschlüsseln Schlüssel zur symmetrischen Verschlüsselung wie AES.
Werfen Sie einen Blick hier:
https://www.owasp.org/index.php/Digital_Signature_Implementation_in_Java
Wie Erickson sagte,
Die Schritte, die Sie ergreifen sollten Sie verschlüsseln sollten, sind:
Entschlüsseln: