PHPのhash関数で使えるアルゴリズムとハッシュ化後の文字数
PHPで使えるハッシュアルゴリズムは数あれど、普段はsha512とかしか使わないので、他にどんなアルゴリズムが使えるのかなと思って調べてみました。
アルゴリズム | ハッシュ後の文字数 | ハッシュ後の値 |
---|---|---|
md2 | 32 | 8fa92a81e7d8a72b35f6... |
md4 | 32 | 7abeea0e8263e51dc0ea... |
md5 | 32 | 3fda63189cefa52b6c46... |
sha1 | 40 | d508c652210e04db0cb8... |
sha224 | 56 | fdb3ceb76888f9fe2cd2... |
sha256 | 64 | b4047d6b10734a3ffa51... |
sha384 | 96 | 58bd4facf707e8ad44c0... |
sha512 | 128 | d4a7eaeabaa5bb278dcb... |
ripemd128 | 32 | af7dd7ffdc304ee8a7e5... |
ripemd160 | 40 | 69300ed41e7248525d4b... |
ripemd256 | 64 | 9d1b3f0ff1e451d9cb7d... |
ripemd320 | 80 | 2b98d24ef151026f6c1f... |
whirlpool | 128 | cda03e10f481928f282d... |
tiger128,3 | 32 | 5b57ab4960615ba99538... |
tiger160,3 | 40 | 5b57ab4960615ba99538... |
tiger192,3 | 48 | 5b57ab4960615ba99538... |
tiger128,4 | 32 | fb8f43cc374c6cbb83f9... |
tiger160,4 | 40 | fb8f43cc374c6cbb83f9... |
tiger192,4 | 48 | fb8f43cc374c6cbb83f9... |
snefru | 64 | 3770205302bf9fdfdbed... |
snefru256 | 64 | 3770205302bf9fdfdbed... |
gost | 64 | 98bcbe7e0a0519e9227b... |
adler32 | 8 | 0a110214 |
crc32 | 8 | 8a32dc08 |
crc32b | 8 | 96ca22e1 |
salsa10 | 128 | e5dba67a5a0ad3ab3395... |
salsa20 | 128 | d565e7b137317ee2c250... |
haval128,3 | 32 | 17db26d84f78dedac3b6... |
haval160,3 | 40 | f4cde2003f3a0a21c1ad... |
haval192,3 | 48 | a60a5ca307812831ba34... |
haval224,3 | 56 | 3eceafb480650a6dee89... |
haval256,3 | 64 | 423a2c010ffc75652310... |
haval128,4 | 32 | cf36730d8c11c961e52d... |
haval160,4 | 40 | 004c5fc847fe8df6a476... |
haval192,4 | 48 | efbbf5628737f69a63b3... |
haval224,4 | 56 | 6b669c904b6014c7db01... |
haval256,4 | 64 | 01c963ac67ce6a8ec31c... |
haval128,5 | 32 | b14a2ea7350b9e771236... |
haval160,5 | 40 | 83a020f2362e0571162d... |
haval192,5 | 48 | 1f87bed2293dd0b86927... |
haval224,5 | 56 | f22283ad2555eb2d94f3... |
haval256,5 | 64 | 0186abc5f24b927dfce0... |
上記表を生成したソースコードは以下です。
<?php $algos = hash_algos(); echo 'アルゴリズム | ハッシュ後の文字数 | ハッシュ後の値 ' . PHP_EOL; echo '-----------|----------------|----------------' . PHP_EOL; foreach($algos as $algo){ $hashed = hash($algo, 'HOGE_001'); echo implode(' | ', array( '***' . $algo . '***', strlen($hashed), substr($hashed, 0, 20) . (strlen($hashed) > 20 ? '...' : '') )) . PHP_EOL; }
Hash関数に関しての詳細は以下の公式ドキュメントをご覧ください。
Hash関数
http://php.net/manual/ja/ref.hash.php
当然のことながら、どんな文字列を渡しても、返ってくる文字数に変わりはないようでした。