MD5算法的“数字指纹”特性使其成为应用最广泛的文件完整性验证算法,通常用于以下两种情况:
1.保存二进制文件系统的数字指纹
许多系统管理和安全软件都提供文件系统完整性评估功能。 在系统初始安装后,为文件系统建立了一个基本的校验和数据库。 由于哈希校验和的长度很小,因此可以方便地存储在容量很小的存储介质上。 以后可以定期或按需重新计算文件系统的校验值。 一旦发现与原始保存的值不匹配,则表明该文件被非法修改,或感染病毒,或被木马程序替换 。
应用程序有许多不同的名称,有时称为摘要,有时称为 学校校验和,有时称为指纹。 其实意思是一样的,就是hash可以用来表示数据本身,因为如果数据在存储或者传输过程中发生任何变化,它的hash都会发生变化。 由于这种独特的特性,哈希函数最常见的功能是执行数据完整性检查,即数据无损检查。
2。 文件传输验证
将传输文件的 MD5 哈希与源文件进行比较,以确保一致性,从而在统计上确保两个文件相同。 它通常用于检查文件传输过程中是否存在错误,以确保文件在传输过程中没有被恶意篡改。 很多下载工具也利用MD5的特性来保证用户在断点处多次恢复下载后下载文件的正确性
另外一个更高级的解决方案就是所谓的代码签名。 文档接收者不仅可以验证文档的完整性,还可以根据他对证书颁发者和证书所有者的信任来决定是否接受该文档。 浏览器在下载和运行插件和 Java 小程序时使用此模式。 例如,我们从服务器下载软件。 如果软件被黑客修改了,那么我们下载的软件就不是原版软件了。 对于银行客户,可能存在账户被盗的风险。 通过哈希运算,可以通过哈希运算得到下载软件的哈希值,然后将该哈希值与软件发布者发布的哈希值进行比较,判断软件是否被篡改
1。 认证协议,有一种认证协议叫“挑战认证模式”:需要认证的一方向被认证方发送一个随机字符串(“挑战”),认证方发送的随机字符串与自己的哈希值 验证密码,然后返回给验证者,验证者将接收到的哈希值与哈希运算的结果进行比较,并在自己端匹配对方的验证密码。 (“验证”)。 如果它们相同,则统计上可以认为另一方具有密码,即经过身份验证。
2。 数字签名、哈希算法是现代密码系统的重要组成部分。 由于非对称算法运算速度慢,单向哈希函数在数字签名协议中扮演着重要的角色。 在这个签名协议中,双方必须事先协商好双方支持的哈希函数和签名算法
3。文件校验,常见的校验算法有奇偶校验和CRC校验。 这两种验证可以在一定程度上检测和纠正数据传输中的通道错误,但不能防止恶意数据的破坏也不能抵抗数据的篡改。
签名者首先计算数据文件的哈希值,然后使用非对称算法对极短的哈希值进行数字签名 . 对方验证签名时,首先计算数据文件的哈希值,然后使用非对称算法验证数字签名。 哈希值的数字签名在统计上等同于文件本身的数字签名。 首先,数据文件本身可以与其哈希值分开存储,或者可以在没有数据文件本身的情况下进行签名验证。 其次,在某些情况下,签名密钥可能与解密密钥相同,即如果对数据文件进行签名,则操作与非对称解密操作相同,这是非常危险的。 破坏者可能会向您发送一个文件,并试图诱骗您将其解密为需要您签名的文件。 因此,在对任何数据文件进行数字签名时,只对其哈希值进行签名是安全的。
哈希游戏就是根据这些原则构建和开发的。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。