当前位置: 首页 > news >正文

非加密散列算法的应用-MurmurHash

背景

目前有三代非加密散列算法

  • 第1代:lookup
  • 第2代:MurmurHash
  • 第3代:CityHashSpookyHash,缺点是,只使用了64位数学函数而没有32位版本

MurmurHash性能测试

没有啥,直接上代码

// 大约400+MB
var data = File.ReadAllBytes(@"C:\Users\Administrator\Downloads\AxureRP-10.3924.zip");
using var murmur = MurmurHash.Create128();
using MD5 md5 = MD5.Create();
using SHA1 sha1 = SHA1.Create();
// 每种算法计算2次,模拟800+MB数据
int? count = 2;
// 计算耗时
Stopwatch watch1 = new Stopwatch();
Stopwatch watch2 = new Stopwatch();
Stopwatch watch3 = new Stopwatch();
watch1.Start();
count.For(i =>
{var hash = murmur.ComputeHash(data);
});
watch1.Stop();
watch2.Start();
count.For(i =>
{var hash = md5.ComputeHash(data);
});
watch2.Stop();
watch3.Start();
count.For(i =>
{var hash = sha1.ComputeHash(data);
});
watch3.Stop();
// 输出结果
Console.WriteLine($"[Mur] ComputeHash {count} Times:{watch1.ElapsedMilliseconds} ms");
Console.WriteLine($"[MD5] ComputeHash {count} Times:{watch2.ElapsedMilliseconds} ms");
Console.WriteLine($"[SHA] ComputeHash {count} Times:{watch3.ElapsedMilliseconds} ms");

运行效果:

在这里插入图片描述

总结

如果在不需要考虑安全性,只需要考虑过滤重复文件或者一些需要唯一性判断的条件下,可以使用非加密的散列hash算法相较于常见的MD5、SHA-1等,速度有明显的提升。

http://www.xdnf.cn/news/467443.html

相关文章:

  • 【Java】Spring IoC中的相关注解
  • 关于mysql分区键
  • Web GIS可视化地图框架Leaflet、OpenLayers、Mapbox、Cesium、ArcGis for JavaScript
  • 5.15本日总结
  • docker 命令操作大全
  • 【Matlab】最新版2025a发布,深色模式、Copilot编程助手上线!
  • redis中key的过期和淘汰
  • PDA手持终端应用有哪些?
  • Python生成器:高效处理大数据的秘密武器
  • YOLO11解决方案之距离计算探索
  • RHCE实验:通过脚本判断用户是否存在
  • 与entity物体的交互
  • 提升MySQL运维效率的AI利器:NineData深度评测与使用指南
  • 网页渲染的两条赛道
  • 语音识别——语音转文字
  • 20250515通过以太网让VLC拉取视熙科技的机芯的rtsp视频流的步骤
  • Spring Boot 拦截器:解锁5大实用场景
  • QImage高效率像素操作的方法
  • 基于windows环境Oracle主备切换之后OGG同步进程恢复
  • 兰亭妙微B端UI设计:融合多元风格,点亮品牌魅力
  • 嵌软面试每日一阅----通信协议篇(二)之TCP
  • 一招解决Tailwindcss4.x与其他库样式冲突问题
  • 报销单业务笔记
  • 中国近代史2
  • 深度学习框架对比---Pytorch和TensorFlow
  • MySQL 学习(十)执行一条查询语句的内部执行过程、MySQL分层
  • 验证可行分享-Rancher部署文档
  • CSRF攻击 + 观测iframe加载时间利用时间响应差异侧信道攻击 -- reelfreaks DefCamp 2024
  • 第一天的尝试
  • C语言中的指定初始化器