Pracuję w C # i MSSQL i, jak można się spodziewać, przechowuję moje hasła solone i mieszane.
Kiedy patrzę na hash przechowywany w kolumnie nvarchar (na przykład out of box dostawca członkostwa aspnet). Zawsze byłem ciekawy, dlaczego generowane wartości Salt i Hash zawsze wydają się kończyć jednym lub dwoma znakami równości.
Widziałem podobne rzeczy podczas pracy z algorytmami szyfrowania, czy to przypadek, czy jest tego powód?
hashing
character-encoding
Liath
źródło
źródło
hash("my password")
tworzy tablicę[1,2,3,4,5]
i muszę przechowywać te wartości w bazie danych, istnieją gorsze możliwości niż przechowywanie łańcuchaAQIDBAU=
(Oczywiście, jeśli używana funkcja haszująca już wytwarza łańcuch, wydaje się trochę głupie, aby kodowanie w Base64 było trochę niemądre. )Odpowiedzi:
Te zaszyfrowane ciągi są (zwykle?) Kodowane w formacie Base64, a znak równości służy do uzupełniania ciągu, aby długość (liczba bajtów) była podzielna przez trzy. Wikipedia dość dobrze to wyjaśnia: http://en.wikipedia.org/wiki/Base64 .
źródło
Czy może to być padding kodujący Base 64?
Sekwencja „==” wskazuje, że ostatnia grupa zawierała tylko jeden bajt, a „=” oznacza, że zawiera dwa bajty. Poniższy przykład ilustruje, w jaki sposób obcięcie wejścia całego powyższego cytatu zmienia wypełnienie wyjściowe:
http://en.wikipedia.org/wiki/Base64#Output_padding
źródło