Hash算法是一种将任意长度的二进制值映射为固定长度较小的二进制值的算法。Hash算法将任意长度的数据(消息)压缩到一个长度固定、较短的数据串中。常见的哈希算法有MD5、SHA-1、SHA-256等。
PHP实现的各类hash算法长度及性能测试实例
算法简介
Hash算法是一种将任意长度的二进制值映射为固定长度较小的二进制值的算法。Hash算法将任意长度的数据(消息)压缩到一个长度固定、较短的数据串中。常见的哈希算法有MD5、SHA-1、SHA-256等。
下面我们将具体介绍PHP实现的各类Hash算法的长度及性能测试实例。
算法列表
以下是PHP中可用的Hash算法列表:
| 算法 | 长度(字节) |
|---|---|
| md2 | 16 |
| md4 | 16 |
| md5 | 16 |
| sha1 | 20 |
| sha224 | 28 |
| sha256 | 32 |
| sha384 | 48 |
| sha512/224 | 28 |
| sha512/256 | 32 |
| sha512/384 | 48 |
| sha512 | 64 |
| ripemd128 | 16 |
| ripemd160 | 20 |
| ripemd256 | 32 |
| ripemd320 | 40 |
| whirlpool | 64 |
表格整理自官方文档PHP Hash函数
示例
下面是使用md5和sha1算法生成哈希值的示例。
<?php
$message = 'Hello world!';
// 使用MD5哈希算法
$md5Hash = hash('md5', $message);
echo "MD5哈希长度为:" . strlen($md5Hash) . " 生成的Hash为:" . $md5Hash . "<br>";
// 使用SHA1哈希算法
$sha1Hash = hash('sha1', $message);
echo "SHA1哈希长度为:" . strlen($sha1Hash) . " 生成的Hash为:" . $sha1Hash . "<br>";
?>
示例输出:
MD5哈希长度为:32 生成的Hash为:b10a8db164e0754105b7a99be72e3fe5
SHA1哈希长度为:40 生成的Hash为:0a4d55a8d778e5022fab701977c5d840bbc486d0
性能测试
下面是使用不同Hash算法生成哈希值的性能测试示例。
<?php
$message = 'Hello world!';
$times = 10000;
// 测试MD5哈希算法性能
$start = microtime(true);
for ($i = 0; $i < $times; $i++) {
$md5Hash = hash('md5', $message);
}
$end = microtime(true);
$md5Time = $end - $start;
echo "MD5哈希生成耗时:" . $md5Time . " 秒<br>";
// 测试SHA1哈希算法性能
$start = microtime(true);
for ($i = 0; $i < $times; $i++) {
$sha1Hash = hash('sha1', $message);
}
$end = microtime(true);
$sha1Time = $end - $start;
echo "SHA1哈希生成耗时:" . $sha1Time . " 秒<br>";
// 测试SHA256哈希算法性能
$start = microtime(true);
for ($i = 0; $i < $times; $i++) {
$sha256Hash = hash('sha256', $message);
}
$end = microtime(true);
$sha256Time = $end - $start;
echo "SHA256哈希生成耗时:" . $sha256Time . " 秒<br>";
?>
示例输出:
MD5哈希生成耗时:0.040101051330566 秒
SHA1哈希生成耗时:0.049370288848877 秒
SHA256哈希生成耗时:0.07039999961853 秒
从以上测试结果可以看出,在我们的测试环境中,MD5明显比SHA1、SHA256等Hash算法速度更快。
结语
本文介绍了PHP中可用的Hash算法列表及其长度,同时还提供了两个示例以及一段性能测试代码,帮助PHP开发者们更好地理解Hash算法的应用及性能表现。
编程基础网
本文标题为:PHP实现的各类hash算法长度及性能测试实例
基础教程推荐
猜你喜欢
- 浅谈laravel框架sql中groupBy之后排序的问题 2023-03-02
- php 实现一个字符串加密解密的函数实例代码 2023-12-24
- Laravel框架控制器,视图及模型操作图文详解 2023-03-17
- 实例讲解PHP中使用命名空间 2022-12-11
- PHP中echo,print_r与var_dump区别分析 2024-02-08
- laravel技巧之查询构造器Query Builder叠加链式调用的方法 2022-10-02
- 使用PHP开发留言板功能 2023-03-12
- 完美的2个php检测字符串是否是utf-8编码函数分享 2024-01-15
- php使用explode()函数将字符串拆分成数组的方法 2023-12-18
- PHP children()函数讲解 2022-12-15
