PHP中MD5函式效率

2021-04-20 09:30:08 字數 1219 閱讀 2642

起因

md5函式與字串長度

然後就對php下的md5系列函式進行了研究,發現在網上的一些資訊其實是有細節問題的。比如「中md5()函式的執行時間會隨著字串的長度增加而直線變慢」。雖然這個結論大致是正確的,但是他演示程式還是有細節問題,因為其中有不少的時間是被隨機字串給占用了。

經過我的測試,php中md5函式確實會隨著被加密字串長度的增加而函式時間正比增加,在php的實際應用中,對小於100位的md5加密不用擔心其效率和效能。

hash(』md5′, 『***』)與md5(』***』)

如果是php的話,在所需加密的字串位數較少時,hash(』md5′, 『***』)會比md5(』***』)效率高上2-8倍左右。當位數增加的時候,比如500位以上時,hash(』md5′, 『***』)與md5(』***』)時間基本相差無幾,可以放心使用。

測試**

test_hash.php

$t1 = gettimeofday();

for ($i = 0; $i < 10000; $i++)

$t2 = gettimeofday();

echo ($t2['sec'] - $t1['sec']) * 1000 + ($t2['usec'] - $t1['usec']) / 1000 . "/n";

test_md5.php

$t1 = gettimeofday();

for ($i = 0; $i < 10000; $i++)

$t2 = gettimeofday();

echo ($t2['sec'] - $t1['sec']) * 1000 + ($t2['usec'] - $t1['usec']) / 1000 . "/n";

結論

1.md5函式執行時間會隨著字串的長度增加而直線變慢。

2.在位數較小的情況下,hash(』md5′, 『***』)與md5(』***』)效率高,但是此時單次md5操作所需時間很微小,可以忽略不計,使用md5函式。

3.當位數較多的情況下,比如500位以上時,hash(』md5′, 『***』)與md5(』***』)時間基本相差無幾,可以放心使用md5函式。

4.總的來說,直接使用md5(』***』)忽略hash(』md5′, 『***』)是可取的。

ps:本文真無聊。

md5效率測試

華為雲主機 1c1g docker php7 cli function getelapst targs,count t2 microtime true return t2 t1 1000 1000 elaps1 getelapst str repeat hello 10 1000 echo 字串長度...

php 變數的md5加密,PHP中的MD5加密

php中的md5加密 2005 02 17 enet ciweek 綜述 密碼學是研究編制密碼 我們簡稱為加密 encode 和破譯密碼 我們稱之為解密 decode 的技術科學。研究密碼變化的客觀規律,應用於編制密碼以保守通訊秘密的,稱為編碼學 應用於破譯密碼以獲取通訊情報的,稱為破譯學,總稱密碼...

php漏洞 md5函式漏洞

0x01 背景 php在處理雜湊值時,用 和 來比較的時候,如果雜湊字串以0e開頭的時候,雜湊值會預設為0,所以兩個不同的字串經過md5加密成雜湊值,如果雜湊值開頭是0e的話,會預設成相等.2.當md5遇到陣列的話,會返回null,null null的時候,直接相等了 0x02 copy了一些其他大...