php中各种hash算法的执行速度比较
更多内容推荐微信公众号,欢迎关注:

PHP中的Hash函数很多,像MD4、MD5、SHA-1、SHA-256、SHA-384、SHA-512等我们比较常见,那么各个哈希的执行速度呢?
$algos = hash_algos();
foreach ($algos as $algo){
$start = microtime(true);
for($i=0; $i<50000; $i++){
hash($algo, microtime().$i);
}
$end = microtime(true);
$timeres[$algo] = $end-$start;
}
asort($timeres, SORT_NUMERIC);
print_r($timeres);
对每个hash函数执行5000次,比较时间的长短。
运行结果如下:
[fnv1a32] => 0.31601810455322
[crc32] => 0.31901788711548
[joaat] => 0.31901788711548
[fnv132] => 0.32001781463623
[adler32] => 0.32201790809631
[fnv164] => 0.32901906967163
[fnv1a64] => 0.33101892471313
[crc32b] => 0.33302021026611
[md4] => 0.34102010726929
[sha256] => 0.37002110481262
[ripemd160] => 0.37002110481262
[haval160,3] => 0.37302088737488
[haval192,3] => 0.37402105331421
[haval128,3] => 0.37902212142944
[sha1] => 0.3800220489502
[tiger160,3] => 0.38202214241028
[md5] => 0.38302183151245
[haval224,3] => 0.38402199745178
[ripemd128] => 0.38702178001404
[sha224] => 0.38702201843262
[haval256,3] => 0.38802194595337
[haval192,4] => 0.39402318000793
[ripemd320] => 0.39602184295654
[tiger192,3] => 0.39702296257019
[haval256,4] => 0.39802312850952
[ripemd256] => 0.39902305603027
[haval160,4] => 0.40202283859253
[haval224,4] => 0.40202283859253
[haval192,5] => 0.41402387619019
[haval224,5] => 0.41502404212952
[tiger160,4] => 0.41502404212952
[haval160,5] => 0.41502404212952
[haval128,5] => 0.4170229434967
[tiger192,4] => 0.42202401161194
[tiger128,4] => 0.42502403259277
[haval256,5] => 0.44202518463135
[tiger128,3] => 0.44602489471436
[haval128,4] => 0.45202612876892
[sha512] => 0.45602607727051
[sha384] => 0.46702694892883
[whirlpool] => 0.51503014564514
[gost-crypto] => 0.51803016662598
[gost] => 0.52102994918823
[snefru256] => 0.60203409194946
[snefru] => 0.60903477668762
[md2] => 0.61003494262695
如上,CRC是冗余验证算法,不适合用来做唯一标识符Hash计算
执行速度上,md4 > sha256 > sha1 > md5
将标识转化为长字符串可以用md4()
密码上来说,sha256比sha1快速好用且安全
php中各种hash算法的执行速度比较的更多相关文章
- HashMap中的hash算法总结
前言 算法一直是我的弱项,然而面试中基本是必考的项目,刚好上次看到一个HashMap的面试题,今天也来学习下 HashMap中的hash算法是如何实现的. 数学知识回顾 << : 左移运算 ...
- 【Java深入研究】11、深入研究hashmap中的hash算法
一.简介 大家都知道,HashMap中定位到桶的位置 是根据Key的hash值与数组的长度取模来计算的. JDK8中的hash 算法: static final int hash(Object key ...
- PHP中各种Hash算法性能比较
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- 图像相似度中的Hash算法
度量两张图片的相似度有许多算法,本文讲介绍工程领域中最常用的图片相似度算法之一--Hash算法.Hash算法准确的说有三种,分别为平均哈希算法(aHash).感知哈希算法你(pHash) ...
- HashMap中的hash算法中的几个疑问
HashMap中哈希算法的关键代码 //重新计算哈希值 static final int hash(Object key) { int h; return (key == null) ? 0 : (h ...
- [区块链] 密码学中Hash算法(基础)
在介绍Hash算法之前,先给大家来个数据结构中对hash表(散列表)的简单解释,然后我再逐步深入,讲解一下hash算法. 一.Hash原理——基础篇 1.1 概念 哈希表就是一种以 键-值(key-i ...
- 用最简单的方式在C#中使用多线程加速耗时的图像处理算法的执行(多核机器)。
图像处理中,有很多算法由于其内在的复杂性是天然的耗时大户,加之图像本身蕴涵的数据量比一般的对象就大,因此,针对这类算法,执行速度的提在很大程度上依赖于硬件的性能,现在流行的CPU都是至少2核的,稍微好 ...
- 字符串经典的hash算法
1 概述 链表查找的时间效率为O(N),二分法为log2N,B+ Tree为log2N,但Hash链表查找的时间效率为O(1). 设计高效算法往往需要使用Hash链表,常数级的查找速度是任何别的算法无 ...
- hash算法和常见的hash函数 [转]
Hash,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值. 这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能 会散列成相同的输出,而不 ...
随机推荐
- 校园网突围之路由器开wifi__windows版
之前有写过web版的登录介绍,但是有此人给我发邮件说web版的太麻烦,每次都要有内网才可以.在此我要说下web版的好处. 1.不用安装环境,并不是每个人电脑上都需要安装开发环境,你可以说你硬盘空间大, ...
- poj 1185(状态压缩DP)
poj 1185(状态压缩DP) 题意:在一个N*M的矩阵中,‘H'表示不能放大炮,’P'表示可以放大炮,大炮能攻击到沿横向左右各两格,沿纵向上下各两格,现在要放尽可能多的大炮使得,大炮之间不能相互 ...
- Java容器深入浅出之HashSet、TreeSet和EnumSet
Java集合中的Set接口,定义的是一类无顺序的.不可重复的对象集合.如果尝试添加相同的元素,add()方法会返回false,同时添加失败.Set接口包括3个主要的实现类:HashSet.TreeSe ...
- VMware 三种网络模式的区别
VMware 三种网络模式的区别 VMware 三种网络模式的区别 我们首先说一下VMware的几个虚拟设备 VMnet0:用于虚拟桥接网络下的虚拟交换机 VMnet1:用于虚拟Host-Only网络 ...
- oracle 空表导出dmp会报错
步骤一.查找出来的语句全部复制并执行 select 'analyze table '||table_name||' compute statistics;' from user_tables; 步骤二 ...
- view的阴影效果shadowColor
btn.layer.shadowColor = UIColor.blackColor().CGColor btn.layer.shadowOffset = CGSizeMake(5, 5) btn.l ...
- 洛谷 P4301 [CQOI2013]新Nim游戏 解题报告
P4301 [CQOI2013]新Nim游戏 题目描述 传统的Nim游戏是这样的:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量可以不同).两个游戏者轮流操作,每次可以选一个火柴堆拿走若干根火柴. ...
- 一次绕过防火墙获取RCE以及提权到root权限的渗透过程
本文是关于Apache struts2 CVE-2013-2251是由于导致执行远程命令的影响而被高度利用的漏洞.简而言之, 通过操纵以“action:”/”redirect:”/”redirectA ...
- java多线程 -- ReadWriteLock 读写锁
写一条线程,读多条线程能够提升效率. 写写/读写 需要“互斥”;读读 不需要互斥. ReadWriteLock 维护了一对相关的锁,一个用于只读操作,另一个用于写入操作.只要没有 writer,读取锁 ...
- EOJ 262 润清的烦恼
——题目出处zhoutb2333 题解: 3e6可以带一个log 又是下取整问题.但是分块会TLE. 这样考虑,我们把式子拆成两个部分. 我们先算出来每一个x的[ai/x]项,再算出来[x/ai]项. ...