web-dev-qa-db-ja.com

ハッシュと暗号化された文字列の多くが等号で終わっているのはなぜですか?

私はC#とMSSQLで作業しています。ご想像のとおり、パスワードはソルト処理してハッシュ化して保存します。

Nvarchar列に格納されているハッシュ(たとえば、すぐに使えるaspnetメンバーシッププロバイダー)を見ると、生成されたソルトとハッシュの値が常に1つまたは2つの等号で終わるように見えるのはなぜか、いつも興味をそそられていました。

暗号化アルゴリズムを使用しているときに同様のことがわかりましたが、これは偶然ですか、それとも理由がありますか?

65
Liath

これらのハッシュされた文字列は(通常は?)Base64形式でコード化され、等号は文字列を埋めて長さ(バイト数)を3で割り切れるようにするために使用されます。ウィキペディアはそれをかなりよく説明しています: http://en.wikipedia.org/wiki/Base64

96
svenslaggare

Base 64エンコーディングパディングですか?

「==」シーケンスは、最後のグループに1バイトのみが含まれていたことを示し、「=」は2バイトが含まれたことを示します。以下の例は、上記の引用全体の入力を切り捨てると、出力パディングがどのように変わるかを示しています。

http://en.wikipedia.org/wiki/Base64#Output_padding

37
Jaydee