Gibt Convert.ToBase64String dieselbe Länge zurück wie das Quellbyte-Array?

7

Ich weiß nicht, ob ich eine dumme Frage stelle, aber ich möchte wissen, ob die Funktion Convert.ToBase64String in .NET die gleiche Länge zurückgibt wie die Quellbytegröße oder ist sie anders? Ich wollte den Artikel von MSDN selbst ausprobieren Vorgehensweise: Formularauthentifizierung mit SQL Server 2000 verwenden um mein Passwort zu hashen, aber ich fand heraus, dass die Funktion, die sie benutzt haben, um eine Saite zu erzeugen, 3 mehr Länge zurückgibt, als sie zurückgeben soll. Um hier zu klären, ist der Code in diesem Artikel.

%Vor%     
Myat Htut 12.05.2009, 23:01
quelle

3 Antworten

1

Die base64-Codierung einer Byte-Zeichenkette ist länger als die Byte-Zeichenkette, da diese Byte-Zeichenkette 2 ^ 8 Möglichkeiten pro "Position" hat, während eine Basis-64-Zeichenkette nur 2 ^ 6 Möglichkeiten pro Stelle hat (deshalb nennen wir sie Basis 64).

Denken Sie nur an die Logarithmen und Schublöcher. Nimm die Nummer 5000. Wie viele Orte (Taubenlöcher, Bytes) brauchst du, um sie in Base 256 zu speichern?

%Vor%

Wo log_2 Ihnen sagt, wie viele Bits Sie benötigen. Jetzt wie viele in base64?

%Vor%     
Frank Krueger 13.05.2009, 00:53
quelle
14

Nein, Base64 gibt 4 Bytes für die 3-Byte-Eingabe zurück, aufgerundet (mit = aufgefüllt) bis zur nächsten 4-Byte-Grenze.

%Vor%

Das liegt daran, dass es pro Byte nur 6 Bits (im Grunde eine Zahl von 0-63) verwendet, um nur ASCII-Zeichen zu verwenden, die keine Steuerzeichen sind und im 7-Bit-Bereich liegen. Daher erhalten Sie 3 * 8 = & gt; 4 * 6 Bits beim Kodieren von Daten mit Base64.

    
Lucero 12.05.2009 23:08
quelle
5

base-64 gibt selten eine Zeichenfolge mit der gleichen Länge wie die Eingabe zurück. Im Wesentlichen verwendet es nur 6 der verfügbaren 8 Bits, so dass große Nachrichten (insbesondere) ein zusätzliches 1/3 Volumen benötigen. Es gibt ein paar Verpackungs-Bytes (normalerweise "=") am Ende, um die Nachricht eindeutig zu machen.

    
Marc Gravell 12.05.2009 23:09
quelle

Tags und Links