base64-Codierung ist, das nicht "+/=" (plus-oder ist-gleich-Zeichen)?
Brauche ich zum verschlüsseln einer Zeichenfolge von etwa 1000 Zeichen, kann eine beliebige byte-Wert (00-FF). Ich will nicht Hex, weil es nicht dicht genug ist. das problem mit base64-wie ich es verstehe, ist, dass es + /- und = die Zeichen, die ich nicht tolerieren kann in meiner Anwendung.
Irgendwelche Vorschläge?
- Eigentlich ist das nicht ein problem mit base64 kodiert, es ist ein problem mit Ihrer Anwendung.
- Wie @JeremyP sagte. Wenn Ihre Anwendung kann nicht dulden
+
/
und=
dann sollten Sie sehr, sehr besorgt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie Ciaran sagt, base64 ist nicht sonderlich schwer zu implementieren - aber vielleicht möchten Sie einen Blick zu haben für die bestehenden Bibliotheken, die Ihnen ermöglichen, geben Sie einen benutzerdefinierten Satz von Zeichen zu verwenden. Ich bin mir ziemlich sicher, dass es viele gibt, aber Sie haben nicht angegeben, welche Plattform Sie benötigen diese für.
Im Grunde müssen Sie nur 65 ASCII-Zeichen, die sind akzeptabel - vorzugsweise neben Zeilenumbrüche.
Wählen Sie Ihre Ersatz. Betrachten wir einige andere Varianten: base64-Variante Tabelle aus Wikipedia.
Während base64 encoder/Decoder sind trivial, Ersatz Weise substituiert werden kann, erfolgt in einem einfachen Prä - /post-processing-Schritt eine bestehenden base64 encode/decode-Funktionen (innen-Wrapper) -- keine Notwendigkeit, das Rad neu zu erfinden (ganz). Oder, besser noch, wie Mr. Skeet Punkte heraus, eine bereits vorhandene Bibliothek mit genügend Flexibilität.
Wenn man keine alternative "komische" Zeichen, zum von zu wählen (vielleicht alle anderen Zeichen sind ungültig, so dass nur die 62 alphanumerische Zeichen, zum von zu wählen), Sie immer ein escape-Zeichen für eine sehr leichte (~3/64?) erhöhen Sie in der Größe. Zum Beispiel, 0 (A) kodiert werden als "AA", 62 (+) hätte kodiert werden als "AB" und 63 (/) wäre codiert "AC". Auch dies könnte getan werden, als ein pre/post-step, wenn Sie nicht wollen, schreiben Sie Ihre eigenen encoder/decoder von Grund auf. Der Nachteil bei diesem Ansatz ist, dass das Verhältnis von Zeichen bei der Ausgabe zu Eingabe-bytes ist nicht festgelegt.
Base58Check ist eine option. Es beginnt sich so etwas wie eine de-facto-standard in kryptogeld-Adressen.
Grundlegende Verbesserungen gegenüber Base64:
[0-9a-zA-Z]
0OIl
/0OIlDen Bitcoin-Adresse Utility ist eine Implementierung Beispiel; speziell für Bitcoins.
Hinweis: Eine neue de-facto-standard ist möglicherweise nicht ausreichend für Ihre Bedürfnisse. Es ist unklar, ob die Base58Check encoding-Methode formalisieren, über aktuelle Protokolle.
Wenn es nur diejenigen, die bestimmte Zeichen, die Sie stören, und Sie finden einige andere Charaktere verwenden statt, wie Sie dann über die Umsetzung Ihrer eigenen base64-Modul? Es ist gar nicht so schwierig.
Sicher. Warum schreiben Sie nicht Ihre eigenen Base64 encoder/decoder, aber ersetzen Sie diese Zeichen in Ihrem Algorithmus. Sicher, es wird nicht in der Lage sein, um dekodiert werden, mit einem normalen decoder, aber wenn das ist nicht ein Problem, dann whyt sorgen. Aber, je besser Sie haben mindestens 3 andere chars, die SIND einsetzbar in Ihre app zur Darstellung der + /- und ='s...
Könnten Sie Base32 statt. Weniger dicht als Base64 kodiert ist, wird aber beseitigt unerwünschte Zeichen vollständig.