Saya bekerja di C # dan MSSQL dan seperti yang Anda harapkan saya menyimpan kata sandi saya asin dan hash.
Ketika saya melihat hash yang disimpan dalam kolom nvarchar (misalnya penyedia kotak aspnet keanggotaan out). Saya selalu ingin tahu mengapa nilai-nilai Salt dan Hash yang dihasilkan selalu berakhir dengan satu atau dua tanda sama dengan.
Saya telah melihat hal serupa ketika bekerja dengan algoritma enkripsi, apakah ini kebetulan atau apakah ada alasan untuk itu?
hashing
character-encoding
Liath
sumber
sumber
hash("my password")
menghasilkan array[1,2,3,4,5]
dan saya perlu menyimpan nilai-nilai itu dalam database, ada pilihan yang lebih buruk daripada menyimpan stringAQIDBAU=
(Tentu saja, jika fungsi hash yang digunakan sudah menghasilkan string, sepertinya agak konyol untuk kemudian Base64 menyandikannya. )Jawaban:
String hash ini (biasanya?) Dikodekan dalam format Base64 dan tanda yang sama digunakan untuk mengisi string agar panjang (jumlah byte) dapat dibagi tiga. Wikipedia menjelaskannya dengan cukup baik: http://en.wikipedia.org/wiki/Base64 .
sumber
Mungkinkah basis 64 pengkodean padding?
Urutan '==' menunjukkan bahwa grup terakhir hanya berisi satu byte, dan '=' menunjukkan bahwa ia berisi dua byte. Contoh di bawah ini mengilustrasikan bagaimana memotong input seluruh kutipan di atas mengubah padding output:
http://en.wikipedia.org/wiki/Base64#Output_padding
sumber