Hash函数
Hash函数又称哈希函数、散列函数、杂凑函数。它是一种单向密码体制,即从一个从明文到密文的不可逆映射,只有加密过程,没有解密过程。
Hash函数H将可变长度的数据块M作为输入,产生固定长度的Hash值。
在安全应用中使用的Hash函数称为密码学Hash函数。(单向性)、(抗碰撞性)
弱抗碰撞性:给定一个消息M,要找到另一个消息M',使得H(M)=H(M')很难。
强抗碰撞性:要找到两个随机明文M和M',使得H(M)=H(M')很难。
特点
1.易压缩
2.易计算
3.单向性
4.抗碰撞性
5.高灵敏性
密码学Hash函数的应用范围
N
消息认证
消息认证是用来验证消息完整性的一种机制或服务。消息认证确保收到的数据确实和发送时的一样(即没有修改、插入、删除或重放)。
当Hash函数用于提供消息认证功能时,Hash函数值通常称为消息摘要。
数字签名
在进行数字签名过程中使用用户的私钥加密消息的Hash值,其他任何知道该用户公钥的人都能够通过数字签名来验证消息的完整性。
其他应用
单向口令文件。
入侵检测。
病毒检测。
构建随机函数(PRF)或用做伪随机数发生器(PRNG)
安全Hash算法(SHA)
安全散列算法SHA(Secure Hash Algorithm)是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数,包括 SHA-1、SHA-224、SHA-256、SHA-384 和 SHA-512 等变体。主要适用于数字签名标准(DigitalSignature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。
1
SHA-1
SHA-1产生160位的Hash值。
SHA1始终把消息当成一个位(bit)字符串来处理。
2
SHA-2
Hash值长度依次为256位、384位和512位,分别称为SHA-256、SHA-384和SHA-512,这些算法统称为SHA-2。
比特币中使用到了SHA-256算法
区块链中的每个区块包含交易数据,本区块的Hash,前一个区块的Hash。
数据中就是每笔交易记录。
hash值相当于指纹,不同的区块相当于不同的人,拥有不同的指纹。
当Block中的任意一项数据改变时,hash值都为有很大的变化。即不同的Block内容得到的hash相差甚远,好比是双胞胎的指纹也是有很大的不同的,不会完全一样。
Block通过hash值将一个个独立的Block连接起来,形成一个链条,所以就叫做Blockchain(区块链)。
如果攻击者改变了一个Block中的数据,则此Block的hash值将改变,随机它之后的所有Block的hash值都会改变。
blockchain可以应用于记账的账本中,每个人都会有这样的全部账本。
通过共识机制来共同维护这个账本,使其不被破坏。
总结,hash函数在blockchain中应用广泛,也是非常重要的、学习blockchain要好好的了解hash函数是什么,理解其特点是什么,如果有兴趣的话,可以去深入学习各类算法计算hash值的过程。
领取专属 10元无门槛券
私享最新 技术干货