Hash一般译为“散列”,也音译为“哈希”,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,输出的就是散列值。
这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值
来唯一确定输入值。简单说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
可使用的对象包括: 数字 、字符串、元组,不可使用hash函数的是 列表、字典。
hash的特征:hash值的计算过程是以依据这个值的特征计算的,这要求被hash的值必须固定,因此被hash的值必须不可变
用途: 文件签名 、 md5加密 、 密码验证
我们都知道数据是存储在内存里的,内存中的每一个位置都有自己的地址标示。当我们存储了上百万的人名的数据,当我们查找的时候将是一个
漫长的过程,假如我们能够将这些人名转换成,数字直接存储在数字代表的内存地址中,等要找这个人的时候,直接去这个地址找人是不是就方便了?
例如:
假如对上述的联系人信息进行存储时,采用的Hash函数为:姓名的每个字的拼音开头大写字母的ASCII码之和。因此
address(张三)=ASCII(Z)+ASCII(S)=90+83=173; address(李四)=ASCII(L)+ASCII(S)=76+83=159; address(王老五)=ASCII(W)+ASCII(L)+ASCII(W)=87+76+87=250;
但具体的情况比这个要复杂很多,还有很多复杂的因素都没有考虑进入,比如如果计算出