哈希函数是密码学中的一个重要分支

想知道更多区块链技术知识,请百度【链客区块链技术问答社区】
链客,有问必答!

在这里插入图片描述

1哈希函数是密码学中的一个重要分支,该函数是一类数学函数,它可以在有限的合理时间内,将任意长度的消息变换成固定长度的二进制串,且不可逆,这个输出值就是哈希值,也叫散列值或消息摘要。以hash函数为基础的hash算法,在数字签名,实现数据完整性,merkle树数据存储和检索等方面有着广泛的应用。
在比特币系统中使用了两个密码学hash函数,一个是SHA256,另一个是ripemd160。ripemd160主要用于生成比特币地址,SHA256是比特币链上几乎所有加密算法的hash函数。

  1. 技术原理
    hash函数也叫散列函数,杂凑函数。它是一种单向密码机制,也就是只能加密,而不能解密。数学表达式可以为:h=H(m),其中H是哈希函数,m是要加密的信息,h是输出的固定长度的哈希值。运算过程是设定一个初始向量,对消息补长到算法要求长度,将补长后的消息拆分成N份数据块,N份数据块与初始向量通过hash算法进行迭代循环运算,最终得到固定长度的hash值。
    hash函数具有以下特点:

压缩性:对任意长度的信息加密成固定长度的hash值;
单向性:hash函数的数学原理没有逆运算,所以不能将hash值转换成加密前的信息;
抗碰撞性:hash函数的运算过程相当复杂,包含多种数学运算和大量变量循环运算,要满足两个不同的消息产生相同的hash值几乎不可能发生;
高灵敏性:任何微小的输入都有可能对输出产生巨大的影响。
典型的hash函数有两类:消息摘要算法(MD5)和安全散列算法(SHA)。
2. hash碰撞
理想的hash函数对于不同的输入得到两个不同的hash值。在实际中,如果存在两个不同的信息m,m’使H(m)=H(m’),那么就称m和m’是该函数的一个碰撞。简言之,hash碰撞是指两个不同的消息在同一个哈希函数作用下,产生两个相同的哈希值。
为了保证数据安全性和不可篡改性,实际hash算法要足够复杂使其有很强的hash抗碰撞性。
hash抗碰撞性分为两种:一种是弱抗碰撞性,即指定的消息x和函数H,去求消息y,使H(x)=H(y)在计算上是不可行的;另一个是强抗碰撞性,即给定函数H,对于任意一对不同的消息x和y,使得H(x)=H(y)在计算上也是不可行的。

猜你喜欢

转载自blog.csdn.net/weixin_44172023/article/details/89014063