哈希算法简介说明
下文笔者讲述哈希算法的相关简介说明,如下所示
哈希算法简介
哈希算法:
称之为"摘要算法"(Digest)
哈希算法的作用:
将指定数据转化成固定长度、不规则的数据。
哈希算法的使用场景:
在计算机内部进行一些数值计算
用于验证数据是否被修改,如:给定一个文件的MD5值,就可以验证文件是否被修改
哈希算法简介
哈希算法的特点1:
输出值的数据长度不变
输出数据的长度取决于哈希函数
如:
在SHA-1的情况下,它固定为20个字节
即使输入非常大的数据,输出的哈希值数据长度也不会改变
同理,无论输入的数据有多小,哈希值的数据长度是相同的
哈希算法的特点2:
相同的输入,返回结果相同
哈希算法的特点3:
输入相似的数据
当它们相差一个字节,输出也会有很大的不同
哈希算法的特点4:
输入完全不同的数据,输出相同的哈希值会以低概率出现
这种现象是哈希值冲突(哈希碰撞)
并且这种是无法避免的,我们只能尽量的减少哈希碰撞的概率
根据哈希碰撞概率,哈希输出长度越长,越难碰撞
哈希算法的特点5:
哈希值不能反推原数据
常用哈希算法
MD4、MD5、SHA-0、SHA-1、SHA-2(SHA-256和SHA512)
| 算法 | 输出长度(位) | 输出长度(字节) |
| MD5 | 128 | 16 |
| SHA-1 | 160 | 20 |
| RipeMD-160 | 160 | 20 |
| SHA-256 | 256 | 32 |
| SHA-512 | 512 | 64 |
哈希示例
@Test
public void testHash() throws NoSuchAlgorithmException{
MessageDigest md = MessageDigest.getInstance("SHA-512");
md.update("java265.com".getBytes());
byte[] res = md.digest();
System.out.println(new BigInteger(1,res).toString(16));
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


