3.1.1什么是哈希算法
密码学上的哈希计算方法一般需要具有以下的性质:
1.函数的输入可以是任意长的字符串
2.函数的输出是固定长度的
3.函数的计算过程是有效率的
大白话就是说通过一个方法将一段任意输入的字符串计算出一个固定长度的值,相当于计算出一个身份证号。通过哈希算法计算出的结果,是无法再通过一个算法还原出原始数据的,即是单向的,因此适合用于一些身份验证的场合,同时由于哈希值能够起到一个类似于身份证号的作用,因此也可以用于判断数据的完整性,哪怕数据发生微小的变化,重新计算的哈希值都会与之前的不一样。一般来说,为了保证哈希函数在密码学上的安全性,必须满足以下3个条件。
1)抗冲突,简单来说,哈希函数抗冲突指的是不同的输入不能产生相同的输出。必须说明的是,抗冲突并不是说不会有冲突,只不过找到有冲突的两个输入的代价很大,不可承受。
2)信息隐藏。这个特性是指如果知道了哈希函数的输出,不可能逆向推导出输入。
3)可隐匿性。如果有人希望哈希函数的输出是一个特定的值,只要输入的部分足够随机,在足够合理的时间内都将不可能破解。
3.1.2哈希算法的种类
MD5:MD5是输入不定长度信息,输出固定长度128bit的算法。生成4个32位数据,最后联合起来成为一个128bit哈希。目前该算法已被证明是一种不安全的算法。王晓云教授在2004年破解了MD5算法。
SHA1:SHA1在许多安全协议中广为使用,包括TLS,SSL。2017年google宣布攻破了SHA1.
SHA2:SHA算法家族的第二代,主要有SHA224,SHA256,SHA384,SHA512.
SHA3:SHA算法家族的第三代。
RIPEMD-160:是一个160位加密哈希函数。
3.1.3区块链中的哈希算法
1.区块哈希
所谓区块哈希就是对区块头进行哈希计算,得出某个区块的哈希值,用这个哈希值可以唯一确定某一个区块,相当于给区块设定了一个身份证号,而区块与区块之间就是通过这个身份证号进行串联,从而形成了一个区块链的结构。
2.梅克尔树
比特币中的梅克尔树称为二叉梅克尔树,每一个区块都有自己的梅克尔树,是通过将区块中的交易事务哈希值两两结对计算出新的哈希值,然后哈希值再两两结对进行哈希计算,递归循环,直到计算出最后一个根哈希值,这样的一棵树也称为哈希树。梅克尔树既能用于校验区块数据的完整性,也能对SPV钱包进行支付验证。
3.2公开密钥算法
公钥和私钥是现代密码s学分支g非对称性加密里面的名词,对于一段需要保护的信息,通常使用公钥加密,用私钥解密,这种加密方法称为公开密钥算法。这种算法由输入算输出很容易,但是从输出计算输入则几乎不可能。比特币使用椭圆曲线加密算法作为公共密钥编码的基础。
RSA算法:是常见的非对称甲酸算法,既能用于加密,也能用于数字签名,是目前最流行的公开密钥算法,RSA的重担缺陷是无法从理论上把握它的保密性能如何。
椭圆曲线密码算法:实现了数据加密解密、数字签名和身份认证等功能,具有安全性高、生成公私钥方便、处理速度快和存储空间小等方面的优势。
3.4应用场景
1.账户地址生成
2.价值转移保卫
3.完整性证明
4.零知识证明
网友评论