起因

在校内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$t1 = gettimeofday();

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

$t1 = gettimeofday();

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:本文真无聊。

Tags: MD5, 效率

版权声明:原创作品,欢迎转载,转载时请务必以超链接形式标明文章原始地址、作者信息和本声明。

php的md5(),PHP中MD5函数效率相关推荐

  1. md5 java_java中MD5函数

    import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5U ...

  2. PHP中MD5函数漏洞

    题目描述 一个网页,不妨设URL为http://haha.com,打开之后是这样的 if (isset($_GET['a']) and isset($_GET['b'])) {if ($_GET['a ...

  3. php中sha1,PHP中sha1()函数和md5()函数的绕过

    相信大家都知道,sha1函数和md5都是哈希编码的一种,在PHP中,这两种编码是存在绕过漏洞的. PHP在处理哈希字符串时,会利用"!="或"=="来对哈希值进 ...

  4. php中md5加密函数怎么用,php中md5()函数的定义和用法汇总

    PHP加密函数-md5()函数加密什么是MD5()函数?MD5()函数是计算器字符串的 MD5散列值,使用MD5的算法,MD5的全称是Message-Digest Algorithm 5,它的作用是把 ...

  5. ASP.Net中MD5加密-16位32位

    public string md5(string str,int code) { if(code==16) //16位MD5加密(取32位加密的9~25字符) { return System.Web. ...

  6. ASP.Net中MD5和SHA1加密的几种方法

    首先简单介绍一下MD5和SHA1: MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由Mit Laboratory for Computer Scie ...

  7. 浅谈MD5加密算法中的加盐值(SALT)

    我们知道,如果直接对密码进行散列,那么***可以对通过获得这个密码散列值,然后通过查散列值字典(例如MD5密码破解网站),得到某用户的密码. 加Salt可以一定程度上解决这一问题.所谓加Salt方法, ...

  8. php mysql 绕过_PHP中md5绕过

    一.md5($password,true)的SQL注入问题 这里要提到一下MySQL中的数值比较问题. 1.当数字和字符串比较时,若字符串的数字部分(需要从头开始)和数字是相同的,那么则返回的是tru ...

  9. oracle解析md5,Oracle中的MD5加密详解

    一.技术点 1. DBMS_OBFUSCATION_TOOLKIT.MD5 DBMS_OBFUSCATION_TOOLKIT.MD5是MD5编码的数据包函数,但偶在使用select DBMS_OBFU ...

  10. python2 md5库_python版本坑:md5例子(python2与python3中md5区别)

    起步 对于一些字符,python2和python3的md5加密出来是不一样的. # python2.7 pwd = "xxx" + chr(163) + "fj" ...

最新文章

  1. 11kw星三角启动延时几秒_电机星三角降压启动原理图
  2. 立即终止Sleep的线程
  3. 中原证券携手神策数据,筑就线上线下融合的数字化运营体系
  4. 复现经典:《统计学习方法》第13章 无监督学习概论
  5. Nettiers快速使用入门(一) 数据库
  6. 2012年云计算领域将发生6件大事
  7. 编程之美——3.1字符串移位包含问题
  8. 代码整洁之道读书笔记----第三章---函数--第二节-函数参数讨论
  9. Proteus与emu8086实现流水灯联调
  10. 利用MATLAB编程或者Simulink工具来绘制伯德图和奈奎斯特图
  11. Android手机摄像头作为PC摄像头开发
  12. PD 关于tso 分配源代码分析
  13. Go语言圣经 - 第11章 测试 - 11.1 go test 11.2 测试函数
  14. matlab 怀特图,怀特异方差检验方法在matlab中的实现,以及广义最.....
  15. 【高等数学】矩阵与向量组的秩和等价
  16. 云重磅 |央视专访任正非;拼多多被薅上亿羊毛;甲骨文对云未来的10项技术预测...
  17. matlab之绘制表达式或函数fplot
  18. sqllite查询数据量_Sqlite大数据量查询优化比较
  19. D. Lucky Chains edu139 div2
  20. 用HTML和CSS做一个携程旅游手机端布局含源码分享

热门文章

  1. 【查找资料】冰点文档下载免费下载百度、豆丁、丁香、畅享、MBALib、道客巴巴、Book118等文库文档
  2. 网络安全从小白到专家
  3. Nutch 深入浅出
  4. html都是纯文本文件吗,关于“什么是纯文本文件”的思考
  5. 线性动力学问题(二)
  6. 虚拟同步发电机技术(VSG)综述解读和研发思考
  7. python谷歌翻译 频率限制_利用Google进行无长度限制的文本翻译(无需API,无需Money)...
  8. 100项PPT制作技术,做出让观众倾倒的演示文档!
  9. cleanmymac x激活码免费下载激活及使用教程
  10. android风格ppt模板下载,PPT模板大全app下载