在深入学习区块链时,不可避免的需要了解密码学。密码学流传已久,有几千年历史,在军事、外交、情报等领域有广泛的的应用。在区块链领域,也大量应用了密码学算法,比如哈希算法和椭圆曲线算法,今天我们盘点一下区块链项目常用的一些加密算法。
1. 哈希算法
比特币系统中使用的哈希函数分别用于完成工作量证明计算合生成地址。简言之,哈希算法是将任意长度的字符串映射为较短的固定长度的字符串。因为这个运算的确定性,高效性使得去中心化的计算能够实现。又因为对输入的敏感性,和该映射逆函数难以寻找(抗原像攻击),对区块链系统安全性有很大帮助。
2. 椭圆曲线算法
椭圆曲线是一套关于加密数据,解密数据交换密匙的算法, 也可用于对数据签名和验证。
签名一方面可以保证用户的账户不被其他人顶替,另一方面保证用户不能否认其所签名的交易。用私钥对交易信息签名,矿工用用户的公钥验证签名,验证通过,则交易信息记账,完成交易。
3. Base58编码
Base58是比特币使用的编码方式,主要用于产生比特币的钱包地址,这种编码格式不仅实现了数据压缩,保持了易读性,还具有错误诊断功能。
4. 零知识证明
零知识证明是20世纪80年代初由计算机科学家Goldwasser和Micali等人共同提出的一项技术,它主要是指证明者能够在不向验证者提供任何有用信息的情况下,使验证者相信某个论断是正确的。
零知识证明能够成立需要具备三个要素,即完整性、可靠性和零知识。举个例子来说就是,假设有一个环形走廊,出口和入口相邻但不互通(在目测距离之内),在这个环形走廊中间的某处有一道锁起来的门,只有拥有钥匙的人才可以通过;这时A要向B证明自己拥有打开这道门的钥匙,用零知识量证明来解决就是,B看着A走进入口并在出口等待,如果A从入口进入通过走廊并从出口走出,则可以证明其拥有打开中间那扇门的钥匙,而在这个过程中,他完全不用向B提供钥匙的具体信息。所以零知识证明实际上是一种概率证明而非确定性证明。
这四项加密技术大家看完有什么感受吗?