哈希算法
密码哈希函数是一类数学函数,可以在有限合理的时间内,将任意长度的消息压缩为固定长度的二进制串,其输出值称为哈希值,也成为散列值。
一个优秀的哈希算法将实现:
1)正向快速:给定明文和hash算法,在有限时间和有限资源内能计算出hash值
2)逆向困难:给定(若干)hash值,在有限时间内很难(基本不可能)推出明文
3)输入敏感:原始输入信息输入一点信息,产生的hash值看起来应该都有很大的不同
4)冲突避免:很难找到两段不同的明文,使得他们的hash值一致(发生冲突)
哈希算法的输入值和输出值之间没有任何规律,所以不能从输出值算出输入值,想要找到指定的输出值只能枚举,不断跟换输入值,寻找满足条件的输入值
几大成熟哈希算法介绍 :
1)MD系列哈希算法 MD就是MessageDigest的简称。家族成员包括MD2,MD4和MD5都产生128位哈希值。目前MD系列算法都发生过碰撞。
2)SHA哈希算法 Secure Hash Algorithm,直译为安全散列算法。现共有SHA-1,SHA-224,SHA-256,SHA-384,SHA-512。
3)SM3杂凑算法 MD和SHA是国家通用的标准,SM3是我国算法标准。输入长度的上限是2的6次方,输出长度是256比特。
比特币中,应用了两个密码学哈希函数,一个是SHA256,一个是RIPEMD160,用于比特币地址的生成
哈希指针链
哈希指针是一个指向存储地点的指针,加上一个针对存储信息的哈希值。哈希指针不仅是一种检索信息的方法,同时也是一种检查信息是否被修改过的方法。
区块链就可以看做是一类使用哈希指针的链表,因此每个区块不仅仅告诉前一个区块的位置,也提供一个哈希值去验证这个区块所包含的数据是否发生改变