博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP中各种Hash算法性能比较
阅读量:5030 次
发布时间:2019-06-12

本文共 1639 字,大约阅读时间需要 5 分钟。

今天做的模块又用到了Hash函数,突然想起Hash函数可能会比较占CPU资源,所以希望使用一种速度最快的摘要函数。但是PHP中的Hash函数很多,MD4、MD5、SHA-1、SHA-256、SHA-384以及SHA-512,都是比较常见的安全领域的HASH应用。于是写了个程序对比了一下PHP支持的各种Hash函数:

 

 

此程序测试每种hash函数支持的算法,对50000个字符串执行hash计算,然后将耗时按从低到高排序,结果如下:

Array(    [crc32b] => 1.14942403926    [crc32] => 1.15080493481    [adler32] => 1.17250810205    [md4] => 1.21484698894    [md5] => 1.25582505324    [sha256] => 1.31992111638    [ripemd256] => 1.34005199425    [ripemd128] => 1.34174097336    [sha1] => 1.34424093234    [ripemd160] => 1.36161398381    [haval128,3] => 1.37490507759    [haval160,3] => 1.37925811601    [haval192,3] => 1.37971906387    [haval224,3] => 1.38690299403    [haval256,3] => 1.38968507692    [tiger128,3] => 1.40321999939    [tiger192,3] => 1.42025405684    [tiger160,3] => 1.42113689062    [ripemd320] => 1.42461802158    [haval128,4] => 1.4465580045    [haval160,4] => 1.44935391309    [haval192,4] => 1.45606506625    [haval224,4] => 1.4650528846    [tiger128,4] => 1.47951410777    [tiger192,4] => 1.49081709387    [haval256,4] => 1.50713596634    [haval160,5] => 1.51613600436    [haval224,5] => 1.51645894888    [haval192,5] => 1.51678603177    [haval256,5] => 1.51900808377    [tiger160,4] => 1.52507308815    [haval128,5] => 1.53689793875    [whirlpool] => 1.82801189377    [snefru] => 1.85931909387    [gost] => 1.89863007236    [sha384] => 1.95804009064    [sha512] => 1.97130295938    [md2] => 4.99702701607)

CRC是冗余验证算法,不适合用来做唯一标识符Hash计算,MD4是最快的摘要算法,MD5次之,SHA系列算法居然是SHA-256最快,比SHA-1还快一些。由此得出结论:要把唯一标识符转换成定长字串可以考虑使用MD4,而密码加密则SHA-1或SHA-256更合适。MD5就没有多少使用的必要了,速度比不过MD4,安全性比不过SHA,还是趁早放弃的好。

 

转载于:https://www.cnblogs.com/wicub/p/6269112.html

你可能感兴趣的文章
Eclipse 实用快捷键大全
查看>>
与非门和或门实现异或门
查看>>
golang统计出其中英文字母、空格、数字和其它字符的个数
查看>>
poj 1782 Run Length Encoding
查看>>
《自我介绍》
查看>>
在线考试系统设计思路
查看>>
p1150[noip2013普及]表达式求值
查看>>
POST和GET有什么区别?
查看>>
js基础
查看>>
基础_模型迁移_CBIR_augmentation
查看>>
第二次寒假作业
查看>>
类与 对象 概念 break continue
查看>>
tensorRT使用python进行网络定义
查看>>
[转]从程序员到项目经理(三):认识项目经理
查看>>
深度分析如何在Hadoop中控制Map的数量
查看>>
dede判断当前文章
查看>>
mpvue学习笔记
查看>>
[LeetCode] 628. Maximum Product of Three Numbers_Easy
查看>>
[Java in NetBeans] Lesson 06. Custom classes
查看>>
[AngularFire2 & Firestore] Example for collection and doc
查看>>