更多内容推荐微信公众号,欢迎关注:

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算法的执行速度比较的更多相关文章

  1. HashMap中的hash算法总结

    前言 算法一直是我的弱项,然而面试中基本是必考的项目,刚好上次看到一个HashMap的面试题,今天也来学习下 HashMap中的hash算法是如何实现的. 数学知识回顾 << : 左移运算 ...

  2. 【Java深入研究】11、深入研究hashmap中的hash算法

    一.简介 大家都知道,HashMap中定位到桶的位置 是根据Key的hash值与数组的长度取模来计算的. JDK8中的hash 算法: static final int hash(Object key ...

  3. PHP中各种Hash算法性能比较

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  4. 图像相似度中的Hash算法

           度量两张图片的相似度有许多算法,本文讲介绍工程领域中最常用的图片相似度算法之一--Hash算法.Hash算法准确的说有三种,分别为平均哈希算法(aHash).感知哈希算法你(pHash) ...

  5. HashMap中的hash算法中的几个疑问

    HashMap中哈希算法的关键代码 //重新计算哈希值 static final int hash(Object key) { int h; return (key == null) ? 0 : (h ...

  6. [区块链] 密码学中Hash算法(基础)

    在介绍Hash算法之前,先给大家来个数据结构中对hash表(散列表)的简单解释,然后我再逐步深入,讲解一下hash算法. 一.Hash原理——基础篇 1.1 概念 哈希表就是一种以 键-值(key-i ...

  7. 用最简单的方式在C#中使用多线程加速耗时的图像处理算法的执行(多核机器)。

    图像处理中,有很多算法由于其内在的复杂性是天然的耗时大户,加之图像本身蕴涵的数据量比一般的对象就大,因此,针对这类算法,执行速度的提在很大程度上依赖于硬件的性能,现在流行的CPU都是至少2核的,稍微好 ...

  8. 字符串经典的hash算法

    1 概述 链表查找的时间效率为O(N),二分法为log2N,B+ Tree为log2N,但Hash链表查找的时间效率为O(1). 设计高效算法往往需要使用Hash链表,常数级的查找速度是任何别的算法无 ...

  9. hash算法和常见的hash函数 [转]

       Hash,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值. 这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能 会散列成相同的输出,而不 ...

随机推荐

  1. [微软官方]SQLSERVER的兼容级别

    ALTER DATABASE (Transact-SQL) 兼容级别 https://docs.microsoft.com/zh-cn/sql/t-sql/statements/alter-datab ...

  2. vue 引入组件

    <comA></comA>此时可用在模板里 //a为vue文件,里面定义了模板import comA from './components/a' export default ...

  3. AJAX 跨域问题 php

    原生ajax请求方式: var xhr = new XMLHttpRequest(); xhr.open("POST", "http://xxxx.com/demo/b/ ...

  4. 半夜思考之查漏补缺 , Spring 中 Bean 之间的依赖问题

    每次看书都会发现自己的不足 . 当一个 singten 的 Bean 依赖一个 prototype 的 Bean 时 , 如果不加注意 , 会发生一些奇怪的事情 , prototype 变为了 sin ...

  5. ASP.NET MVC 模型绑定

    模型绑定指的是MVC从浏览器发送的HTTP请求中为我们创建.NET对象,在HTTP请求和C#间起着桥梁的作用.模型绑定的一个最简单的例子是带参数的控制器action方法,比如我们注册这样的路径映射: ...

  6. 【大数据】Spark基础解析

    第1章 Spark概述 1.1 什么是Spark 1.2 Spark内置模块 Spark Core:实现了Spark的基本功能,包含任务调度.内存管理.错误恢复.与存储系统交互等模块.Spark Co ...

  7. 用C语言获取任意文件的长度(可能大于2GB)#define _FILE_OFFSET_BITS 64

    打开文件后用 fseek() 函数把文件位置指针移动到文件的末尾,用 ftell() 获得这时位置指针距文件头的字节数,这个字节数就是文件的长度.但是这样做也会受到下面的限制:ftell() 函数的返 ...

  8. Java之Object类和常用的API

    Object类和常用的API 学习过程中的笔记,涉及到Objetc中的equals方法和toString方法,日期类Date,日历类Calendar,日期格式化类SimpleDateFormat以及基 ...

  9. bzoj 2839 : 集合计数 容斥原理

    因为要在n个里面选k个,所以我们先枚举选的是哪$k$个,方案数为$C_{n}^k$ 确定选哪k个之后就需要算出集合交集正为好这$k$个的方案数,考虑用容斥原理. 我们还剩下$n-k$个元素,交集至少为 ...

  10. ACM比赛_注意

    ACM比赛_注意: 比赛前: 1.前一天早一点睡觉 2.避免参加激烈的活动,以免比赛时精力不足; 3.少喝水,并提前上厕所; 4.把账号,密码都准备好,放在txt中 5.提前创建多个程序(etc.10 ...