Ich arbeite in C # und MSSQL und wie zu erwarten, speichere ich meine Passwörter gesalzen und gehasht.
Wenn ich mir den in einer nvarchar-Spalte gespeicherten Hash ansehe (zum Beispiel den out the box aspnet-Mitgliedschaftsanbieter). Ich war schon immer neugierig, warum die generierten Salt- und Hash-Werte immer mit ein oder zwei Gleichheitszeichen enden.
Ich habe ähnliche Dinge bei der Arbeit mit Verschlüsselungsalgorithmen gesehen. Ist dies ein Zufall oder gibt es einen Grund dafür?
hashing
character-encoding
Liath
quelle
quelle
hash("my password")
das Array erzeugt[1,2,3,4,5]
und ich brauche diese Werte in einer Datenbank zu speichern, es gibt schlimmere Möglichkeiten als die Zeichenfolge zu speichernAQIDBAU=
(Natürlich, wenn die Hash - Funktion in Gebrauch ist bereits eine Reihe produziert, scheint es ein wenig albern dann Base64 kodieren. )Antworten:
Diese gehashten Zeichenfolgen werden (normalerweise?) Im Base64-Format codiert, und das Gleichheitszeichen wird zum Auffüllen der Zeichenfolge verwendet, um die Länge (Anzahl der Bytes) durch drei teilbar zu machen. Wikipedia erklärt es ziemlich gut: http://en.wikipedia.org/wiki/Base64 .
quelle
Könnte es Base 64-Codierungsauffüllung sein?
Die Sequenz '==' gibt an, dass die letzte Gruppe nur ein Byte enthielt, und '=' gibt an, dass sie zwei Bytes enthielt. Das folgende Beispiel zeigt, wie das Abschneiden der Eingabe des gesamten obigen Anführungszeichens die Ausgabeauffüllung ändert:
http://en.wikipedia.org/wiki/Base64#Output_padding
quelle