web-dev-qa-db-ja.com

SHA256ハッシュの長さはどれくらいですか?

私はパスワード+ saltでSHA256を実行するつもりですが、MySQLデータベースをセットアップするときに私のVARCHARをどれぐらい長くする必要があるかわかりません。良い長さは何ですか?

215
Tony Stark

その名前が示すように、sha256は256ビット長です。

16進数表現を使用している場合は、各数字は4ビットをコード化します。したがって、256ビットを表すには64桁が必要です。したがって、長さは常に同じで、まったく変化しないため、varchar(64)またはchar(64)が必要です。

そしてデモ:

$hash = hash('sha256', 'hello, world!');
var_dump($hash);

あなたにあげるでしょう:

$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"

すなわち64文字の文字列です。

293
Pascal MARTIN

SHA256の256ビットのエンコーディングオプション:

  1. Base64:1文字あたり6ビット=パディング文字を含むCHAR(44)
  2. 16進数:1文字あたり4ビット= CHAR(64)
  3. バイナリ:1バイトあたり8ビット= BINARY(32)
56
RickNZ

BINARY(32)が最適化された方法なので、私はBINARY(32)を使用することを好みます。

(00からFF)までの32桁の16進数で配置できます。

したがってBINARY(32)です。

24
marctrem

なぜあなたはそれをVARCHARにするのですか?違いはありません。これは常に64文字です。これは、 オンラインSHA-256電卓の1つ に何かを実行することによって判別できます。

20
ceejayoz

64文字固定ですので、char(64)を使用してください。

6
Noushad