1哈希算法有哪些?
常见的哈希算法有MD5和SHA系列。目前,MD5和SHA1已经被破解。一般建议至少使用SHA2-256算法。
我们来看看写哈希函数需要注意什么。首先我们要明白,Hash函数将大范围映射到小范围,目的往往是为了节省空间,让数据易于保存。此外,哈希函数也将应用于搜索。
2.哈希算法冲突
稍微思考一下就可以发现,既然输入数据不是定长的,但是输出哈希值是定长的,也就是说哈希值是有限集,而输入数据可以是无限多的,那么建立一一对应的关系显然是不现实的。所以“碰撞”是必然会发生的,所以一个成熟的哈希算法会有更好的防碰撞性。同时,在实现哈希表的结构时要考虑哈希碰撞的问题。
哈希算法有什么特点?
哈希值也称为指纹或摘要,具有以下特征:
反转难度:给定哈希值,很难在有限的时间内反转明文。
冲突避免:很难找到两个内容不同的明文,使它们的哈希值一致。
输入敏感度:原始输入信息的任何变化,新的哈希值都应该有很大的变化。
快速:给定明文和哈希算法,可以在有限的时间和有限的资源内计算出哈希值。