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

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

PHP中MD5函数效率相关推荐

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

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

  2. PHP中MD5函数漏洞

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

  3. md5 java_java中MD5函数

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

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

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

  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. php mysql 绕过_PHP中md5绕过

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

  7. php中md5加密函数怎么用,PHP加密函数—md5()函数加密实例用法

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

  8. oracle中md5算法,oracle数据库中存储过程使用MD5算法加密

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

  9. php中的ltrim,PHP中ltrim()函数的用法与实例讲解

    PHP中ltrim()函数的用法与实例讲解 PHP ltrim() 函数 实例 移除字符串左侧的字符: $str = "Hello World!"; echo $str . &qu ...

  10. mysql中常用函数与存储过程的创建

    mysql中常用函数与存储过程的创建 常用函数汇总 数学函数 字符串函数 日期和时间函数 条件判断函数 系统函数 加密函数 其他函数 自定义函数 自定义变量的声明和赋值 基本语法 实例 存储过程 事务 ...

最新文章

  1. (Python)石头剪刀布游戏
  2. C#_uploadify_mvc_version
  3. 多线程下载问题(IDHTTP)
  4. 怎么查看服务器是多少位系统,查看服务器是多少位的
  5. 可信云十年,重磅研究成果与2021云计算十大关键词悉数发布
  6. 中国拟修订保守国家秘密法 严防通过互联网泄密
  7. Oculus首席科学家发声,称VR需要能够“欺骗”大脑
  8. 分析两个网页设计思路
  9. 错误解决办法:zipimport.ZipImportError: can't decompress data; zlib not available
  10. oracle12c备份与恢复,Oracle Database12c Oracle RMAN备份与恢复(第4版)
  11. caj转pdf的方法
  12. python画e指数函数_python绘制指数函数
  13. 智能算法--------------进化计算总结
  14. Hangfire详解
  15. 这可能是我见过最好的博客系统!(附源码)
  16. iOS-自己定义键盘选择器
  17. 内网安全之:域与域权限判断
  18. 2021国赛A题第三问 - 点关于三维直线的对称点 - 入射光的反射向量
  19. Linux虐我千百遍,我待linux如初恋
  20. 【漫画,Java微服务实践百度网盘

热门文章

  1. Linux环境下安装SVN
  2. 98.android 全国城市区号,座机号区号匹配对应城市
  3. 计算机网络nos是什么意思,什么是网络操作系统(NOS)
  4. 网络云盘项目——总体介绍、附源码链接
  5. PHP第一季视频教程.李炎恢.学习笔记(三)(第2章 基本语法(2))
  6. Js关于光标对象与定位插入图片
  7. 贪心算法(greedy algorithm,又称贪婪算法)详解(附例题)
  8. MFC仿QQ好友列表控件
  9. 爬虫python下载电影_python爬虫--爬取某网站电影下载地址
  10. DirectShow Samples