一、数据摘要算法概述
数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。数据摘要算法也被称为哈希(Hash)算法或散列算法。
常用的数据摘要算法主要以下几大类:
1、CRC8、CRC16、CRC32
CRC(Cyclic Redundancy
Check,循环冗余校验)算法出现时间较长,应用也十分广泛,尤其是通讯领域,现在应用最多的就是 CRC32
算法,它产生一个4字节(32位)的校验值,一般是以8位十六进制数,如FA 12 CD
45等。CRC算法的优点在于简便、速度快,严格的来说,CRC更应该被称为数据校验算法,但其功能与数据摘要算法类似,因此也作为测试的可选算法。
在 WinRAR、WinZIP 等软件中,也是以 CRC32 作为文件校验算法的。一般常见的简单文件校验(Simple File
Verify – SFV)也是以 CRC32算法为基础,它通过生成一个后缀名为 .SFV 的文本文件,这样可以任何时候可以将文件内容
CRC32运算的结果与 .SFV 文件中的值对比来确定此文件的完整性。
与 SFV 相关工具软件有很多,如MagicSFV、MooSFV等。
2、MD2 、MD4、MD5
这是应用非常广泛的一个算法家族,尤其是 MD5(Message-Digest Algorithm
5,消息摘要算法版本5),它由MD2、MD3、MD4发展而来,由Ron
Rivest(RSA公司)在1992年提出,目前被广泛应用于数据完整性校验、数据(消息)摘要、数据加密等。MD2、MD4、MD5
都产生16字节(128位)的校验值,一般用32位十六进制数表示。MD2的算法较慢但相对安全,MD4速度很快,但安全性下降,MD5比MD4更安全、
速度更快。
目前在互联网上进行大文件传输时,都要得用MD5算法产生一个与文件匹配的、存储MD5值的文本文件(后缀名为
.md5或.md5sum),这样接收者在接收到文件后,就可以利用与 SFV
类似的方法来检查文件完整性,目前绝大多数大型软件公司或开源组织都是以这种方式来校验数据完整性,而且部分操作系统也使用此算法来对用户密码进行加密,
另外,它也是目前计算机犯罪中数据取证的最常用算法。
与MD5 相关的工具有很多,如 WinMD5等。
3、SHA1、SHA256、SHA384、SHA512
SHA(Secure Hash Algorithm)是由美国专门制定密码算法的标准机构——
美国国家标准技术研究院(NIST)制定的,SHA系列算法的摘要长度分别为:SHA为20字节(160位)、SHA256为32字节(256位)、
SHA384为48字节(384位)、SHA512为64字节(512位),由于它产生的数据摘要的长度更长,因此更难以发生碰撞,因此也更为安全,它是
未来数据摘要算法的发展方向。由于SHA系列算法的数据摘要长度较长,因此其运算速度与MD5相比,也相对较慢。
目前SHA1的应用较为广泛,主要应用于CA和数字证书中,另外在目前互联网中流行的BT软件中,也是使用SHA1来进行文件校验的。
4、RIPEMD、PANAMA、TIGER、ADLER32 等
RIPEMD是Hans Dobbertin等3人在对MD4,MD5缺陷分析基础上,于1996年提出来的,有4个标准128、160、256和320,其对应输出长度分别为16字节、20字节、32字节和40字节。
TIGER由Ross在1995年提出。Tiger号称是最快的Hash算法,专门为64位机器做了优化。
二、常用数据摘要算法的测试
1、测试方法
- 测试范围
:常见的数据校验、摘要算法,主要有 CRC32、MD5、SHA1、SHA256、SHA384、SHA512
- 样本数据
:2G大小Vmware 虚拟机操作系统的磁盘文件,其中包含其中各种类型的文件,如二进制文件和文本文件等。
- 软件平台
:Windows、.NET Framework 2.0
- 硬件平台
:
- 机器A(SCSI Disk):软件配置 Windows 2000 + .Net Framework 2.0;硬件配置 CPU:4 (Xeon),2.8G,RAM:2G ,HD:70 GB SCSI
- 机器B(IDE Disk):软件配置 Windows 2003 + .Net Framework 2.0;硬件配置 CPU:1 (P4),2.8G,RAM:1G,HD:40 GB IDE
考虑到整个测试过程只是涉及到文件读取与哈希值的计算,并无过多的与操作系统、软件平台、开发语言相关的操作,因此可以认为上述测试方法的结果具有普遍性,即也适用于其它操作系统平台(如Linux/Unix)或应用语言/平台(C、Java)。
2、测试结果
1)不同配置机器间的对比
在不同机器配置上的平均运算结果如下表所示:
注1:配有SCSI磁盘的机器运行时间反而比 IDE
磁盘时间长,可能是由于前者具有较多的应用负载造成的,如Oracle、WebSphere等,而且其OS为 Windows 2000,在之上运行
.NET 应用程序可能与 Windows 2003 的效率有所差别
注2:上述算法中,只有 CRC32 没有包含在.NET Framework 中,而是使用C#单独实现的,因此可能会对其测试结果带来一些影响。
2)不同算法的CPU占用率比较
在不同的算法运行时,在机器B上监控其对于
CPU
的平均使用时间,结果如下表所示:
三、一些测试结论
- 数据摘要算法的处理是很快的,在一般配置的PC机上使用MD5算法,处理1G的文件数据只需20-30秒(有些专用设备声称达 3GB/秒),不会对应用或机器带来过多负载;
- MD5、SHA1虽然被发现存在缺陷(碰撞),但在近几年内,仍然可以大量使用;
- SHA256/384/512 的速度较慢,可以用于少量数据摘要,目前不适合用于大文件校验;
- ...
相关推荐
算法英文版第四版,完全是出版社的原版PDF文件,彩图复制编辑,...本书配套网站提供了本书内容的摘要及更多的代码实现、测试数据、练习、教学课件等资源。 《算法(英文版•第4版)》适合用作大学教材或从业者的参考书。
摘要成像算法是影响合成孔径雷达(SAR)成像性能的关键因素。现有测试方法须借助实际设备、雷达数据和测试环境,且缺乏对成像效果的合理评估,严重影响了测试工作的效率
在本文中,我们提出了使用模糊逻辑的深度学习算法的多文档文本摘要,这是一个重要的研究领域NLP、数据挖掘(DM)和机器学习(ML)。 为了提高这里的准确性,我们使用受限玻尔兹曼机来生成原始文档的缩短版本,而不会...
一部分非负性约束会提高算法的效率,但得到的特征子空间会如何变化?这也是一个前 人没有进行研究的工作,围绕非负矩阵与张量分解及其应用的研究,本文从几个方面对 于非负矩阵与张量分解进行了以下研究工作: 1. ...
摘要:针对分布式数据库查询效率随着数据规模的增大而降低的问题,以Greenplum分布式数据库为研究对 象,从优化查询路径的角度提出一个基于代价的最优查询计划生成方法。首先,该方法设计一种有效的代价模型来 估算...
农产品电子商务系统设计研究 摘要:为满足企业农产品营销需求,采用。NET、数据挖掘及混合推荐等技术,设计 并实现农产品电子商务推荐系统。经测试,该系统实现了购物车、农产品浏览、农产品 检索、农产品推荐、农...
摘要:将现代虚拟仪器技术应用于电动机性能并测试领域,可充分发挥虚拟仪器技术开发效率高、灵活性和兼容性强以及可重用度高的特点。设计并实现了多路并行电动机的在线测试系统;使用PID控制算法控制定标参量,通过...
本方案利用TMF320F2808高速的运算能力以及丰富的片内外设,设计并制作出了一台适用于音频频率范围的数字扫频仪,它分别使用DSP内部的PWM模块和ADC模块产生扫频信号和采集数据,具有外围电路少,运算效率高,运算精度...
摘要:本文探讨了一种基于 SOPC(片上可编程系统)技术的视觉测量...经测试,系统速度优势非常明显,相比较于较传统的 PC机,处理效率得到极大的提高。 1引言 视觉测量技术是以机器视觉技术为基础,融合电子技
摘要:将现代虚拟仪器技术应用于电动机性能测试领域,充分发挥了虚拟仪器技术开发效率高、灵活性兼容性强和可重用度高的特点,设计与实现了多路并行电动机的在线测试,并使用PID控制算法控制定标参量,最后通过TCP/...
那些数据结构、那些算法、那些重要观念、那些编程实务中最重要最根本的珍宝,那些蜇伏已久彷佛已经还给老师的记忆,将重新在你的脑中闪闪发光。 目录回到顶部↑庖丁解牛(侯捷自序) i 目录 v 前言 xvii 本书...
" "设 "测试数据要求: " "计 "家电类别(如:电视机,空调,冰箱等)不少于5种,记录数量不少于5" "参 "00。 " "数 " " "进 "2011.12.31 " "度 "完成任务的讲解、并接受课程设计任务,选定课程设计的题目 " "要 ...
6.4.3 copy,强化效率无所不用其极 314 6.4.4 copy_backward 326 6.5 set 相关算法(应用于有序区间) 328 6.5.1 set_union 331 6.5.2 set_intersection 333 6.5.3 set_difference 334 6.5.4 set_symmetric_...
基于java的学生信息管理系统设计与实现 基于java的学生信息管理系统设计与实现 摘要:利用计算机进行学生信息管理,不仅能够保证准确、无误、快速输出,而且还可 以利用计算机对有关信息进行查询,检索迅速、查找...
这种推理方法把知识获取简化为经验知识的收集,并以此为基础构造案例库,构建案例的索引和检索算法,提高对新问题的求解效率,为网优平台智能化提供了一种新途径。 0 引言 随着TD网络建设进入优化阶段,无线...
而我们的Shiro实现系统的权限管理,有效提高开发效率,从而降低开发成本。 粗粒度和细粒度权限 粗粒度权限管理比如:超级管理员可以访问户添加页面、用户信息等全部页面。部门管理员可以访问用户信息页面...
忽略大小写Replace效率瓶颈IndexOf 随机排列算法 理解C#中的委托[翻译] 利用委托机制处理.NET中的异常 与正则表达式相关的几个小工具 你真的了解.NET中的String吗? .NET中的方法及其调用(一) 如何判断ArrayList,...