发布时间:2025-06-14 18:22:58 点击量:
HASH GAME - Online Skill Game GET 300
业界可以找到的哈希算法是有很多种的。我们可以大致按照输出的哈希的长度来聊,虽然哈希算法的安全性也不单单是跟哈希长度有关。例如CRC-32的输出是32BIT,也就是32位的二进制数,表示成十六进制就是8位。MD5算法的哈希是32位16进制数,比较常见。SHA-256是256个BIT,十六进制表示就是64位。这些算法可以分成普通哈希和加密哈希算法,两种算法之间没有特别明显的区别。例如本来MD5就是设计出来做加密哈希的,但是后来由于计算机的发展MD5出现碰撞的可能性就很大了,所以目前MD5只能当普通哈希用,用来做数据校验。加密哈希跟普通哈希的区别就是安全性,一般原则是只要一种哈希算法出现过碰撞,就会不被推荐成为加密哈希了,只有安全度高的哈希算法才能用作加密哈希。同时加密哈希其实也能当普通哈希来用,GIT版本控制工具就是用SHA1这个加密哈希算法来做完整性校验的。一般来讲越安全的哈希算法,处理速度也就越慢,所以并不是所有的场合都适合用加密哈希来替代普通哈希。
根据的定义,哈希函数要做的事情是给一个任意大小的数据生成出一个固定长度的数据,作为它的映射。所谓映Hale Waihona Puke Baidu就是一一对应。一个可靠的哈希算法要满足三点。第一是安全,给定数据M容易算出哈希值X,而给定X不能算出M,或者说哈希算法应该是一个单向算法。第二是独一无二,两个不同的数据,要拥有不相同的哈希。第三是长度固定,给定一种哈希算法,不管输入是多大的数据,输出长度都是固定的。但是仔细想一下,如果哈希的长度是固定的,也就是取值范围是有限的,而输入数据的取值范围是无限的,所以总会找到两个不同的输入拥有相同的哈希。所以,哈希函数的安全性肯定是个相对概念。如果出现了两个不同输入有相同输出的情况,就叫碰撞,COLLISION。不同的哈希算法,哈希位数越多,也就基本意味着安全级别越高,或者说它的”抗碰撞性“就越好。