05 | 密码学:为什么说区块链站在了巨人肩膀上?
哈希算法
哈希算法又称散列函数,它可以将任意长度的数据转换成短的、固定长度的数据指纹。
md5、sha-256、sha512等
1、正向快速
2、逆向困难
3、输入敏感
4、避免碰撞
区块链中的哈希
哈希算法相当于是对信息提取摘要,是数据的指纹,因此经常被用于数据完整性的校验,而区块链在此基础上又做了适当的延伸。
区块链中用到哈希算法的地方主要是交易哈希和块哈希,主要功能就是校验交易及区块的完整性,以及充当区块链网络中交易及区块的唯一标识
区块链数据落盘的时候,我们就可以使用交易哈希、区块哈希分别作为交易及区块的数据主键,只要保持了数据与标识对应索引关系,就可以把交易跟区块存储在任意数据库中。
区块哈希还有另一个作用,区块属性中包含了前一个区块的哈希,从而构建成一条由区块哈希关联的数据链条,所以我们称区块链为哈希链也不为过
非对称加密算法
非对称加密算法:真正的私钥应该只有一份
明文数据采用对称加密算法加密,然后使用非对称加密对称加密的迷药和明文数据哈希,双方收到信息后,用匹配成对的另一个密钥解密数据并核对明文数据哈希
非对称加密算法跟哈希算法一样,也是一类算法的统称。现用的比较多的是 RSA 跟 ECC 椭圆曲线加密算法,RSA 多用于互联网信息传输中,比如我们上网用到的 https 通信,而在区块链中基本都使用的是 ECC 类的变种,比如 ECDSA 跟 ED25519 等。相较于 RSA,ECC 密钥较短,在拥有更高安全性的同时还有更好的性能。
区块链中的非对称加密
区块链中对非对称加密算法的使用并不是直接被用作数据加密,而是利用其具备身份确权的能力,也就是数字签名。
你通过数字货币手机钱包创建了一个账户,此时区块链网络并不知道,只有当你接收到一笔转账之后,网络中才有你这个账户的信息
数字签名示意图
数字签名的本质也是一种加密,只不过针对的是数据的哈希摘要,并不是数据本身。