2017-03-17 7 views
0

Ich lerne Verschlüsselung. Ich habe ein paar Schlüssel erstellt, einen Beispielstring ("1234 5678 9012 3456") codiert und konnte es problemlos entschlüsseln. Der erste Teil funktioniert gut.Wie groß ist der Schlüssel?

Dann versuchte ich es mit einem Beispiel der realen Daten, die ich kodieren möchte, und bekam einen "Daten zu groß für Schlüsselgröße" Fehler.

Die Zeichenfolge Länge ist 14041 Zeichen, und das Endprodukt kann noch größer sein, also wie kann ich es ohne eine 1024000 Bit-Taste oder etwas verrückt so machen?

Edit: Als ich vor ein paar Stunden einige Sachen aus dem geöffnet habe, verwendet die aktuelle Methode, mit der ich gespielt habe, RSA, da dies der Standard für openssl_pkey_new ist.

Grundsätzlich habe ich eine mobile App und ich möchte in der Lage sein, die In-App-Daten auf die sicherste Weise zu aktualisieren. Mein Chef ist ein bisschen paranoid wegen "der Wolke". Meine Idee ist, RSA oder etwas zu verwenden, um die App mit einer Web-API-Seite zu validieren, die aktuellsten Daten aus der kodierten Datenbank zu erhalten und sie in der App für den Speicher zu dekodieren, um zu vermeiden, dass sie rausgeschmissen werden müssen eine neue Version jedes Mal, wenn die Daten der Apps aktualisiert werden (paarweise im Jahr).
Mein Chef wirklich mag nicht den Gedanken daran, Daten undicht, so dass jede Sache, die ich tun kann, um es zu sperren wäre gut.

+0

Könnte helfen: http://stackoverflow.com/questions/7143514/how-to-encrypt-a-large-file-in-openssl-using-public-key – CD001

+0

Welchen Schlüssel und Chiffre verwenden Sie? Es klingt fast wie RSA, aber es könnten andere sein. – jww

+0

@jww Das ist soviel wie ich herausgefunden habe: '$ keysize = 4096; $ res = openssl_pkey_new (array ('private_key_bits' => $ keysize)); ' – AndyD273

Antwort

1

Wenn kein öffentliches/privates Schlüsselpaar benötigt wird, ist keine RSA (asymmetrische) Verschlüsselung erforderlich. Die asymmetrische Datengröße ist auf weniger als die Schlüssellänge begrenzt und sehr langsam.

Im Allgemeinen wird ein symmetrischer Verschlüsselungsalgorithmus wie AES für Daten verwendet.

Eine Zeichenfolge mit einer Länge von 14041 Bytes, die mit RSA verschlüsselt sind, würde eine Schlüsselgröße von über 112K-Bits erfordern (unrealistisch/unmöglich), ein AES-Schlüssel wäre im Allgemeinen 128 oder 256 Bit.

Wenn RSA erforderlich ist, besteht die Strategie darin, eine hybride Verschlüsselung zu verwenden, bei der die Daten mit AES und einem generierten Zufallsschlüssel verschlüsselt werden und anschließend der Schlüssel mit RSA verschlüsselt wird.

+0

Nach weiteren Recherchen bin ich ziemlich sicher, dass der Schlüssel, den ich derzeit habe, RSA ist, da dies der Standard für openssl_pkey_new() zu sein scheint. Ich bin immer noch dabei, herauszufinden, und so werde ich ein wenig über AES lesen – AndyD273

+2

Fügen Sie mehr zur Frage über das, was Sie erreichen möchten. Siehe aktualisierte Antwort. – zaph

+0

Ok, ich habe mein Endziel hinzugefügt, und die symmetrische Verschlüsselung sieht so aus, als wäre es der richtige Weg. Ich fand [diese Seite mit einem AES-256-Beispiel, um Mcrypt zu ersetzen] (https://paragonie.com/blog/2015/05/if-you-re-typing-word-mcrypt-into-your-code-you- re-doing-it-wrong), aber das Beispiel hat diese Warnung: 'Diese Bibliothek ist unsicher, weil sie nach dem Verschlüsseln nicht MAC ist, und ich weiß nicht einmal, was das bedeutet ... Ich muss diese Frage wahrscheinlich schließen und öffne einen neuen, der die richtige Frage stellt. – AndyD273

Verwandte Themen