hash函数是一种用于加密和校验数据的算法,它具有几个基本要求。首先,hash函数应该是快速计算的,使得加密和校验可以在合理的时间内完成。
其次,hash函数应该是不可逆的,即难以根据加密结果逆推出原始数据。
另外,hash函数应该有很高的散列性,即使原始数据有微小的改动,也会导致加密结果发生较大的变化。
最后,hash函数应该是抗碰撞的,即不同的原始数据在加密后不会产生相同的结果。这些基本要求使得hash函数能够有效地保护数据安全和完整性。
Hash函数也称为散列表,是一种常用的数据结构。哈希表优点:可以提供快速插入和查找操作,无论有多少数据项,插入与查找只需接近常量的时间:O(1)时间级。而且编程很容易实现。哈希表的缺点:它是基于数组的,数组一旦被创建,就难以拓展;某些哈希表的填充因子(填入的元素个数/哈希表长度)过大,性能会急剧下降。
Hash函数在多个领域均有应用,而在数字签名和数据库实现时又用的最多,比如基于hash的索引,是最好的单值查找索引;同时,在当前数据爆炸的场景下,执行相似item的查找时,在内存受限时,均可以采取LSH(local sensitive hash)进行分段处理。具体用途很多,不赘述,下面介绍一些常用的知识:hash函数本质;简单的hash函数生成法;hash的冲突消解;