2010-12-27 5 views
2

Viele Online-Beispiele zeigen den Hash als hexadezimale Darstellung, und sie sind in der Regel benutzerdefinierte Implementierungen. Gibt es etwas Falsches oder weniger Sicheres über die Verwendung der Apache Commons Base64-Kodierung? Wenn man etwas über die Kodierung liest, liegt es normalerweise im Bereich, wie man Binär als Text in XML darstellt, aber diskutiert nicht unbedingt Sicherheitsaspekte ... wie die Komprimierung funktioniert.Ist die Verwendung von Base64 over Hex zur Kodierung meines SHA-1-Hashs weniger sicher?

Zu einem verwandten Problem, warum alles verschlüsseln, da Datenbanken binäre Typen, die wahrscheinlich die Verschlüsselung als binär halten könnten? Also, wenn ich ein Passwort speichere, warum es nicht einfach in seinem ursprünglichen Typ speichern?

Antwort

4

Eine Codierung betrifft nur die Darstellung der Daten, nicht ihre Sicherheit. Wenn Sie also ein unverschlüsseltes Passwort senden und eine Form der Verschlüsselung verwenden, haben Sie es nicht sicherer gemacht; Genauso, wenn Sie etwas stark verschlüsselten Text nehmen und ihn dann in einem Kodierungsschema darstellen, wird das auch nicht weniger sicher. In der Regel wird diese Form der Codierung verwendet, um Binärdaten über ein Protokoll (z. B. SMTP) zu senden, wobei das Protokoll nur 7-Bit-ASCII-Text unterstützt. Eine weitere Verwendung finden Sie in URLs, bei denen die Anzahl der Zeichen, die eine URL unterstützen kann, begrenzt ist. Sie können jedoch beliebig komplizierte Binärdaten in diese URL einfügen (z. B. eine Überprüfungssignatur).

1

Nun, wir sind normalerweise nicht gut zu lesen Binär, und Hex ist ein besserer Ersatz dafür. Ich wünschte, du hättest dich mit den Artikeln, auf die du dich beziehst, in Verbindung gesetzt, damit andere direkt darüber sprechen können, worüber du eine Meinung schaffst.

Ich verstehe nicht warum sie würde Base64 über hex verwenden, aber ich nehme an, es ist, weil hex 16 Ziffern und Base64 ist ein paar mehr, so dass eine kompaktere Version des tatsächlichen Hash erzeugen;) ~ Wir Menschen tendieren dazu, eine kleine Menge von Daten auf einmal besser aufzunehmen.

1

Nein, da Base64 eine 1: 1-Codierung ist (dh für jeden Eingang gibt es genau eine Base64-codierte Ausgabe und umgekehrt), ist Base64-Codierung für einen SHA1-Hash genauso "sicher" wie ein Hexadezimalwert. codiert (oder binär codiert, für diese Angelegenheit) Hash.

Die Codierung würde einen Hash nur dann verunsichern, wenn die Codierung es ermöglicht, dass mehrere Hashes in denselben String oder mehrere Strings in denselben Hash dekodieren.

3

Überhaupt nicht. Es ist nur eine Codierung, die die gleichen Bits in ASCII darstellt. Dies ist vor allem dann nützlich, wenn Sie binäre Daten über Kommunikationspfade speichern oder übertragen müssen, die nur für die Verarbeitung von Text vorgesehen sind. Moderne Beispiele oder E-Mail- und Web-Schnittstellen. Sie können das Binärformular auch nicht an ein Terminal senden, um es anzuzeigen, da dies zu einem fehlerhaften oder merkwürdigen Terminalverhalten führen würde.

Wenn Sie die Bits in einem binären Blob in einer Datenbank sicher speichern können, gibt es keinen Grund, in base64 zu codieren. Aber wenn du es nicht tust, wäre es schwieriger, es zu sehen. Sie müssten es zuerst zurück in eine Textform konvertieren.

Verwandte Themen