PHP中MD5函数效率
来源:互联网 发布:python append 编辑:程序博客网 时间:2024/06/15 00:37
PHP中MD5函数效率<script type="text/javascript">-google_ad_client = "pub-7572075838197038";/* 250x250, 创建于 08-8-20 */google_ad_slot = "8423427639";google_ad_width = 250;google_ad_height = 250;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script><script> window.google_render_ad(); </script>
起因
在校内APP发开论坛看到:
姓名大作战由于每次战斗都需要经过2次md5计算,访问用户一多就经常把服务器cpu占用搞到100%,空间商找我麻烦了,昨晚把所在虚拟目录封闭了已经。现在临时采用了将计算过的用户的md5存到数据库中的方法,但是这样基本每次战斗还是会经过一次的md5计算(因为所选择的对手基本都应该是没有对战过的,之前没有计算过他的md5值),谁能提供点更好的方法。
md5函数与字符串长度
然后就对PHP下的md5系列函数进行了研究,发现在网上的一些信息其实是有细节问题的。比如“中md5()函数的执行时间会随着字符串的长度增加而直线变慢”。虽然这个结论大致是正确的,但是他演示程序还是有细节问题,因为其中有不少的时间是被随机字符串给占用了。
经过我的测试,PHP中md5函数确实会随着被加密字符串长度的增加而函数时间正比增加,在PHP的实际应用中,对小于100位的md5加密不用担心其效率和性能。
hash(’md5′, ‘xxx’)与md5(’xxx’)
如果是PHP的话,在所需加密的字符串位数较少时,hash(’md5′,‘xxx’)会比md5(’xxx’)效率高上2-8倍左右。当位数增加的时候,比如500位以上时,hash(’md5′,‘xxx’)与md5(’xxx’)时间基本相差无几,可以放心使用。
测试代码
Test_hash.php
for ($i = 0; $i < 10000; $i++){
$x = hash('md5', 'PHP中MD5效率的白话,网址http://www.ccvita.com/331.html');
}
$t2 = gettimeofday();
echo ($t2['sec'] - $t1['sec']) * 1000 + ($t2['usec'] - $t1['usec']) / 1000 . "/n";
Test_md5.php
for ($i = 0; $i < 10000; $i++){
$x = md5('PHP中MD5效率的白话,网址http://www.ccvita.com/331.html');
}
$t2 = gettimeofday();
echo ($t2['sec'] - $t1['sec']) * 1000 + ($t2['usec'] - $t1['usec']) / 1000 . "/n";
结论
1.md5函数执行时间会随着字符串的长度增加而直线变慢。
2.在位数较小的情况下,hash(’md5′, ‘xxx’)与md5(’xxx’)效率高,但是此时单次md5操作所需时间很微小,可以忽略不计,使用md5函数。
3.当位数较多的情况下,比如500位以上时,hash(’md5′, ‘xxx’)与md5(’xxx’)时间基本相差无几,可以放心使用md5函数。
4.总的来说,直接使用md5(’xxx’)忽略hash(’md5′, ‘xxx’)是可取的。
PS:本文真无聊。
- PHP中MD5函数效率
- PHP中MD5函数漏洞
- 求php md5 加密函数
- PHP sha1() md5()函数漏洞
- Flash中MD5加密函数
- 用PHP写的MD5加密函数
- PHP 中的sha1()和MD5()函数漏洞
- PHP 函数 截取字符串效率的比较
- php中的in_array函数效率分析
- PHP函数count、strlen效率分析
- PHP中in_array 效率及其优化
- 为什么PHP中in_array效率低
- PHP md5
- JAVA中MD5算法实现函数
- PHP将两个关联数组合并函数---提高函数效率
- C++中函数执行效率研究
- C++中内联函数的效率问题
- php 的加密函数 md5,crypt,base64_encode 等使用介绍
- C++的显式类型转换
- a href=# 与 a href=javascript:void(0) 的区别 伪装连接 等
- 各种格式文件ocr成word文件的方法
- printf的格式控制的完整格式总结
- 获取用户IP
- PHP中MD5函数效率
- 使用CDONTS发送邮件
- 让Delphi的标准TStatusBar状态栏控件具有容器功能
- 获得验证码
- 常用meta标记
- oracle undo 表空间的监控管理
- PHP 应用程序的安全 -- 不能违反的四条安全规则
- 卡巴斯基注册码的操作
- 解决:Error spawning 'cmd.exe'