1、算法概述

数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。数据摘要算法也被称为哈希(Hash)算法或散列算法。

1.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等。

1.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等。

1.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来进行文件校验的。

1.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位机器做了优化。

转自:数据摘要算法的测试效率(SHA、MD5和CRC32)

转载于:https://www.cnblogs.com/embedded-linux/p/6718823.html

常用校验算法CRC、MD5、SHA_转相关推荐

  1. 我也聊聊串口通信协议:数据包校验与常用校验算法

    本篇博客主要记载了我对数据校验过程以及奇偶校验的理解. 1.数据校验过程 由于数据传输距离的因素影响,计算机和受控设备间的通信数据就常常出现不可预知的错误.为了防止这些错误所带来的影响,一般在通信时采 ...

  2. 常用校验算法(累加和、异或和)

    1.异或和 异或和就是对数据逐一异或计算(异或结果与下一个数据异或) 下面是校验实例 local rdbuf = "FFFF28000000000000600001000D000000000 ...

  3. 异或校验算法 c语言程序,C# 异或校验算法

    C# 的异或校验算法 直接上代码 public partial class FormCRC : Form { public FormCRC() { InitializeComponent(); } p ...

  4. 常用的简单校验算法:校验和,异或校验,crc校验,LRC校验,补码求和,checksum

    常用的简单校验算法:校验和,异或校验,crc校验,LRC校验,补码求和,checksum 相关思路和源码来自网络,自己只是整理, 做笔记用. 并未完整完善正确归纳,只是个人理解初步做笔记记录. 在实现 ...

  5. 纵向冗余校验计算方法_常见校验算法

    常见校验算法 一.校验算法 奇偶校验 MD5 校验 求校验和 BCC(Block Check Character/ 信息组校验码 ) ,好像也是常说的异或校验方法 CRC(Cyclic Redunda ...

  6. SQL, 数据校验与 CRC,MD5

    前几天,我们 SQL 大数据玩家微信群里,有朋友发布了一条数据校验的题目.觉得有趣,也有必要总结下,所以检索了些论文,结合平时工作中的使用,综合起来讲讲,看看自己能不能把这方面讲清楚 数据校验,常用在 ...

  7. CRC-16原理及通用的16位CRC校验算法代码

    CRC-16原理及通用的16位CRC校验算法代码 循环冗余码校验英文名称为Cyclical Redundancy Check,简称CRC.它是利用除法及余数的原理来作错误侦测(Error Detect ...

  8. bcc校验位怎么算的_BCC(异或校验)、CRC、LRC校验算法

    一.校验算法 BCC(Block Check Character/信息组校验码),好像也是常说的异或校验方法 CRC(Cyclic Redundancy Check/循环冗余校验) LRC(Longi ...

  9. CRC校验算法的解析,暨对网上的CRC详解的补充

    一.CRC的形象理解 本文面向对CRC校验有一定基础的读者,如果你不懂,请戳这里.维基百科还有图解版的. 在CRC的具体实现中,如果要计算CRC的数据很长,一般都会用到寄存器,用来保存当前的计算到的C ...

最新文章

  1. MOSS的CSS样式说明,一个老外总结的
  2. 拿下赌场新客户,但马斯克“超级隧道”何时才能颠覆地面交通?
  3. IOS工作笔记(五)
  4. 计算机二级c语言可以提前交卷吗,软考考试中可以提前交卷吗?计算机软考成绩一般多久公布...
  5. SUN JAVA面试笔试题2
  6. Ubuntu设置环境变量并立即生效
  7. Linux操作系统启动流程简单介绍
  8. 重学TCP协议(6) 四次挥手
  9. 如何获取一张表的字段名
  10. juc原子类之五:AtomicLongFieldUpdater原子类
  11. Window setTimeout() 方法
  12. 关于STM32L100xx, STM32L151xx, STM32L152xx ,STM32L162xx 的Power Control
  13. 全新的SharePoint 2019
  14. Android多图分享至微信
  15. 光大银行监控平台实践,含详细工具及架构选型思路
  16. c#语言中文编程下载,C#编程自学软件
  17. 淘宝用户行为分析(一):点击—加购—收藏—购买
  18. 进制转换之十进制转换为十六进制
  19. 网络面经总结-仅供参考
  20. 彻底征服 React.js + Flux + Redux【讲师辅导】-曾亮-专题视频课程

热门文章

  1. adb ps shell 查看进程,如何使用ADB命令检测正在运行的应用程序
  2. 【HDOJ6957】Maximal submatrix(单调栈,最大子矩阵面积)
  3. 【2021杭电多校赛】2021“MINIEYE杯”中国大学生算法设计超级联赛(2)签到题5题
  4. 【POJ3630】Phone List(字典树)
  5. r语言plotmds_多元统计分析R语言建模| 11 多维标度法MDS
  6. java 自定义异常实例分析_Java自定义异常类的实例详解
  7. vwap算法下单_时间加权平均价格算法(TWAP)和成交量平均算法(VWAP)在量化回测的应用...
  8. JavaScript文档对象模型DOM节点操作之父节点和子节点(2)
  9. spring mysql防注入攻击_【spring】(填坑)sql注入攻击 - 持久层参数化
  10. 数组去重实现的方式(越多越好)