网络安全-哈希算法和数字签名
Posted 海若Hero
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络安全-哈希算法和数字签名相关的知识,希望对你有一定的参考价值。
1. 单向散列算法
单向散列算法也称为哈希算法,它是一种不可逆的单向数学函数,把哈希算法应用于任意长度的一块数据,可以将它映射为一段数据唯一的、不可逆的、定长的、极其紧凑的字符串,这个字符串便称为散列值、哈希值或消息摘要。
常见的单向散列算法有由Ron Rivest设计的可以产生128位散列值的MD5和由NSA设计的可以产生160位的散列值的SHA-1,还有SHA-224、 SHA-256、SHA-384 和SHA-512等。
常见 HASH 算法:
SM3 | SHA | MD5 | |
---|---|---|---|
Hash值 | 256bit | 160bit | 128bit |
分组处理长 | 512bit | 512bit | 512bit |
基本字长 | 32bit | 32bit | 32bit |
步数 | 64(3*16) | 80(4*20) | 64(4*16) |
消息长 | <2^64bit | 2^64bit | 不限 |
MD5:MD5 是由 Ron Rivest 设计的可产生一个 128 位的散列值的散列算法。MD5 设计经过优化以用于 Intel 处理器。这种算法的基本原理已经泄露,这就是为什么它不太受欢迎的原因。
SHA-1:与 DSA 公钥算法相似,安全散列算法 1(SHA-1)也是由 NSA 设计的,并由 NIST 将其收录到 FIPS 中,作为散列数据的标准。它可产生一个 160 位的散列值。SHA-1 是流行的用于创建数字签名的单向散列算法。
HASH 算法主要应用:
1)文件校验
我们比较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据篡改的能力,它们一定程度上能检测并纠正数据传输中的信道误码,但却不能防止对数据的恶意破坏。
MD5 Hash算法的"数字指纹"特性,使它成为目前应用最广泛的一种文件完整性校验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命令。
2)数字签名
Hash 算法也是现代密码体系中的一个重要组成部分。由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。对 Hash 值,又称"数字摘要"进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。而且这样的协议还有其他的优点。
3)鉴权协议
如下的鉴权协议又被称作"挑战--认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。
2. 数字签名
数字签名,顾名思义,就像在办公中用笔对纸质文件进行签名,它是在计算机上对数据文件进行签名,用于鉴别数字信息,验证数据发送方的身份,保证数据的完整性和不可否认性。
它结合使用了非对称加密技术与哈希算法来实现,它包含两种互补的运算:一个用于数字签名的签署,另一个用于数字签名的验证。签名和验签的过程一般由启用 PKI 的应用程序完成,首先由数据的发送方用哈希算法生成数据的哈希值,然后用自己的私钥将这个哈希值加密形成数字签名,将它与数据一起加密发送给接收方;接收方进行解密获得数据和数字签名后,用发送方的公钥对数字签名进行解密,如果成功解密,即证明了发送方的身份;对数字签名解密得到数据的哈希值之后,数据的接收方对数据用相同的哈希算法生成另一个哈希值,然后将这两个哈希值进行比较,如果两者相同,则证明这块数据极有可能在传输期间没有被篡改。.
数字签名签署和验证数据的步骤如图所示:
以上是关于网络安全-哈希算法和数字签名的主要内容,如果未能解决你的问题,请参考以下文章
SHA1 安全哈希算法(Secure Hash Algorithm)