什么是哈希?
如果我们需要誊抄一本新华字典,那么有什么方法呢?比如当我们誊抄到某一页的时候,我们发现这一页字典上共有500个字,如果这时候我们抄的纸张上没有500个字,那么我们就需要重抄了,这就是哈希算法。
Hash,一般直接音译为"哈希",就是把任意长度的输入通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
哈希的原理和特点
1、哈希具有不可逆性。通过哈希函数以及算法转变成的数值无法再转变回来,从哈希值不能反向推导原始数据,因此哈希和加密是不等价的。
2、哈希具有灵敏性,对输入数据很敏感,哪怕只改了一个字节,哈希值也会随之改变。
3、哈希具有碰撞性,哈希在存储数据的时候会发生数据的冲突与碰撞
4、哈希算法执行效率要高,散列结果要尽量均衡。
数组与哈希表
举个例子,假如在一个果园里,有着苹果、雪梨、橘子、葡萄等水果,在以前,我们会建立一个数组,用数组的下标对应的位置来表示、存储他们。