一、数据摘要算法概述
数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。数据摘要算法也被称为哈希(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 的速度较慢,可以用于少量数据摘要,目前不适合用于大文件校验;
- ...
相关推荐
本文研究的主要目标是基于改进sPSO算法的测试数据自动生成方法,以提高软件测试效率和降低软件开发成本。论文首先简要介绍了自动化测试和测试数据自动生成的重要性,然后对基本粒子群算法进行了简化和改进,提出了一...
这种性能上的提升是通过并行处理技术实现的,能够在不同的数据处理环节中同时进行数据摘要的计算,大大提升了处理速度和效率。 文章关键词所涉及的“文件摘要”是加密散列函数的一种应用,即通过算法将任意长度的...
总的来说,这项实证研究为软件测试数据生成提供了一个新的视角,即利用粒子群优化算法来提升测试效率和效果。随着软件技术的发展,这种优化方法有望在更多软件项目中得到应用,以提高软件质量,降低测试成本。同时,...
在了解了文件内容之后,我们可以将文档的知识点进行详细梳理。...这份文档为研究者和工程师提供了一种新的思路,在软件测试数据自动生成这一领域中,能够通过算法的创新来优化测试过程,提高测试效率和质量。
这意味着在软件测试中,采用这种方法可以更有效地生成测试数据,节省时间和资源,提高测试效率和测试覆盖率。 【关键词解析】 1. **组合测试**:组合测试是软件测试的一种方法,它专注于测试输入参数的各种可能...
本资源摘要信息是关于嵌入式系统开发人员C语言测试题数据结构与算法的知识点总结。 1. 算法的定义和类型:算法是指解决某个问题的有限步骤,必须由计算机程序实现。算法可以分为不同的类型,如排序算法、搜索算法、...
摘要中的内容介绍了一种针对粒子群优化算法(PSO)早期收敛问题的改进方法——自适应变异粒子群优化算法(AMPSO),该算法应用于测试数据的生成。AMPSO旨在提高算法的搜索效率和防止过早收敛。文章中提到了以下几个...
- **摘要统计(Summarizer)**:提供对数据集的基本统计信息,如均值、标准差等。 #### 数据源(Datasources) Spark 支持多种数据源格式,如 CSV、JSON、Parquet、ORC 等。用户可以轻松地将这些不同格式的数据加载到 ...
在“云数据平台算法模型优化方案”中,我们主要探讨的是如何提升云环境中大数据处理的效率和准确性,通过优化算法模型来实现这一目标。以下是基于文档内容的关键知识点: 1. **项目需求理解**:首先,任何项目的...
本次提到的“搜狗新闻的自动文本摘要的数据集”是专门为研究自动摘要算法而设计的宝贵资源。 自动摘要通常涉及到自然语言处理(NLP)中的多个技术,包括信息提取、语义理解、文本表示和机器学习等。在这个数据集中...
该模型通过改进哈希算法、动态调整数据块大小、建立高效索引机制和增强安全性等方式,有效解决了传统技术中存在的问题,提高了数据去重的效率和安全性。未来的研究方向包括进一步优化哈希算法、探索更高效的存储管理...
【摘要】中提到的“基于粒子群算法的改进SCOTEM模型测试数据生成方法”是一项研究,旨在解决从UML(统一建模语言)模型自动生成面向对象软件测试用例的关键问题。SCOTEM(Statecharts-based Object-Oriented Test ...
当没有关于数据源特性的先验知识,并且如果统计测试要么不可能实现要么不可靠时,数据压缩问题就会变得更加复杂。为了克服这些问题,必须采用通用编码方案,其中编码过程与对变化的数据源特性进行学习的过程交织在...
软件测试对于确保软件质量和可靠性至关重要,而自动化生成测试用例是提高测试效率的关键。作者贾冀婷针对这一问题,对基本粒子群优化算法进行了改进,并提出了一种基于改进PSO算法的测试用例自动生成系统框架。 ...
在K-SportsSum中,这些数据可能是比赛结果、球员表现、赛事统计数据等,为体育领域的机器学习和人工智能算法提供了训练和测试的基础。 该数据集的主要组成部分是"K-SportsSum"文件,它可能包含以下几类关键信息: ...
该算法针对当前大数据处理中存在的优化问题,旨在提高处理效率并减少计算资源消耗。通过在物联网数据上进行实验验证和对比分析,文章证明了这种方法的有效性和实用性。 #### 凸优化与非凸优化基础 **凸优化**是一...