國內私募機構九鼎控股打造APP,來就送 20元現金領取地址:
http://jdb.jiudingcapital.com/phone.html
內部邀請碼: C8E245J (不寫邀請碼,沒有現金送)
國內私募機構九鼎控股打造,九鼎投資是在全國股份轉讓系統掛牌的公眾公司,股票代碼為430719,為“中國PE第一股”,市值超1000億元。
內部邀請碼: C8E245J (不寫邀請碼,沒有現金送)
國內私募機構九鼎控股打造,九鼎投資是在全國股份轉讓系統掛牌的公眾公司,股票代碼為430719,為“中國PE第一股”,市值超1000億元。
------------------------------------------------------------------------------------------------------------------------------------------------------------------
今天做的模塊又用到了Hash函數,突然想起Hash函數可能會比較占CPU資源,所以希望使用一種速度最快的摘要函數。但是PHP中的Hash函數很多,MD4、MD5、SHA-1、SHA-256、SHA-384以及SHA-512,都是比較常見的安全領域的HASH應用。於是寫了個程序對比了一下PHP支持的各種Hash函數:
<?php define('testtime', 50000); $algos = hash_algos(); foreach($algos as $algo) { $st = microtime(); for($i = 0; $i < testtime; $i++) { hash($algo, microtime().$i); } $et = microtime(); list($ss, $si) = explode(' ', $st); list($es, $ei) = explode(' ', $et); $time[$algo] = $ei + $es - $si - $ss; } asort($time, SORT_NUMERIC); print_r($time); ?>
此程序測試每種hash函數支持的算法,對50000個字符串執行hash計算,然后將耗時按從低到高排序,結果如下:
Array ( [crc32b] => 1.14942403926 [crc32] => 1.15080493481 [adler32] => 1.17250810205 [md4] => 1.21484698894 [md5] => 1.25582505324 [sha256] => 1.31992111638 [ripemd256] => 1.34005199425 [ripemd128] => 1.34174097336 [sha1] => 1.34424093234 [ripemd160] => 1.36161398381 [haval128,3] => 1.37490507759 [haval160,3] => 1.37925811601 [haval192,3] => 1.37971906387 [haval224,3] => 1.38690299403 [haval256,3] => 1.38968507692 [tiger128,3] => 1.40321999939 [tiger192,3] => 1.42025405684 [tiger160,3] => 1.42113689062 [ripemd320] => 1.42461802158 [haval128,4] => 1.4465580045 [haval160,4] => 1.44935391309 [haval192,4] => 1.45606506625 [haval224,4] => 1.4650528846 [tiger128,4] => 1.47951410777 [tiger192,4] => 1.49081709387 [haval256,4] => 1.50713596634 [haval160,5] => 1.51613600436 [haval224,5] => 1.51645894888 [haval192,5] => 1.51678603177 [haval256,5] => 1.51900808377 [tiger160,4] => 1.52507308815 [haval128,5] => 1.53689793875 [whirlpool] => 1.82801189377 [snefru] => 1.85931909387 [gost] => 1.89863007236 [sha384] => 1.95804009064 [sha512] => 1.97130295938 [md2] => 4.99702701607 )
CRC是冗余驗證算法,不適合用來做唯一標識符Hash計算,MD4是最快的摘要算法,MD5次之,SHA系列算法居然是SHA-256最快,比SHA-1還快一些。由此得出結論:要把唯一標識符轉換成定長字串可以考慮使用MD4,而密碼加密則SHA-1或SHA-256更合適。MD5就沒有多少使用的必要了,速度比不過MD4,安全性比不過SHA,還是趁早放棄的好。