2016-08-28 2 views

Antwort

2

Sicherheit und CommonCrypto sind Low-Level-Frameworks. Sie bieten nur Sicherheitsprimitive, nicht ein vollständig verschlüsseltes Datenformat. Es ist schwierig, aus den Primitiven ein sicheres Format zu erstellen, und die meisten Beispiele, die Sie online finden, sind unsicher. Entweder wusste der Autor nicht, wie man ein sicheres Format erstellt, oder der Autor nimmt an, dass Sie wissen, wie Sie das, was sie geschrieben haben, verstehen und ein sicheres Format fertigstellen können.

Es gibt keine "Entschlüsselung einer Zeichenfolge" in der Weise, die Sie wahrscheinlich meinen. Alle Verschlüsselungsfunktionen erzeugen rohe Bytes. Wenn Sie eine Zeichenfolge möchten, konvertieren Sie sie in Base64 oder Hex oder was auch immer. Einige Bibliotheken fügen dies automatisch hinzu, aber es führt oft zu seltsamen Artefakten wie Double-Base64-kodierten Daten.

Wenn Sie ein plattformübergreifendes Verschlüsselungsformat "out of the box" wünschen, finden Sie unter RNCryptor oder libSodium. Beide konvertieren Daten in Daten. Wenn Sie Strings wollen, codieren und dekodieren Sie die Daten einfach wie Sie wollen (normalerweise als base64 oder hex).

+1

Beachten Sie, dass es so etwas wie Format Preserving Encryption oder FPE gibt. Im Allgemeinen ist es einfacher, in Bytes zu kodieren und dann - falls erforderlich - den Geheimtext wieder in einen String zu codieren, wie in der obigen Antwort. Bibliotheken, die FPE unterstützen, scheinen knapp zu sein. –

+0

Ich vermisse etwas die * Zeichenkodierung * (z. B. UTF-8) benötigt, um den binären Klartext in der obigen Antwort zu generieren. Derzeit spricht es nur über die Codierung des Chiffretextes. –

+1

Es ist ein fairer Punkt über FPE, obwohl es nicht nur selten ist, Implementierungen zu finden, es ist noch schwieriger, sie zu sichern (besonders im allgemeinen Fall). Sie können Handelssicherheit für die Kompatibilität aufwickeln, wenn Sie nicht sehr vorsichtig sind (und oft sogar wenn Sie es sind). Aber ja, da ist so etwas. –

Verwandte Themen