加密机制是整个区块链中的基础,很多文章都有对加密机制进行详细的分析,但是相当不容易理解,我这里用简单的语言来尝试解释以下区块链的加密机制
哈希算法(hash)
哈希算法算是区块链中不可或缺的一种算法,它能把任意长度的数据映射成较短的固定长度的二进制值。它正向计算很快速,但是逆向十分困难,并且修改后hash值就会改变。
举个例子:
今天天气很晴朗
使用hash算法后会变成
6283725acf07139bc08db741bc78dc60078991a0
如果你改了其中一个字比如 今 改成 明,使用hash后会变成
348a04eb8a62ace1e8883231f3e6b0674f04e389
或者把这句话修改成如下
天气还不错
e4d7c6a8e828f4e835d88d7b04b47b753718a444
举个不太恰当但是更直观的例子:
假设三个数相加,其结果就是hash值
2+2+2 = 6
只要修改任何一个加数,算出来的结果都不对,比如把2改成1
1+2+2 = 5
逆向困难的意思就是,我现在给你个数字 6,你能告诉我原来是哪些数之和吗?
非对称加密
这是区块链中最重要的一种加密算法,非对称加密包括一对密钥:公钥和私钥,私钥自己持有,公钥可以公布出来。首先要知道的是,用公钥加密后的内容,只有私钥能解密;用私钥加密的内容,只有公钥能解密。
用公钥加密、私钥解密这个过程,就好比你手握的信箱钥匙(私钥),任何人都可以从信箱的投递口给你寄信,但是只有你能打开信箱看到内容。
用私钥加密、公钥解密这个过程,就好像纸钞的防伪,只有国家拥有给纸钞防伪的技术(私钥),但是其他人却可以通过这些防伪办法(公钥)来辨别真伪。
密码对生成
拿比特币举一个例子
在 0~2^256 之间随机选择一个数当成私钥,私钥通过椭圆曲线算法可以算出公钥,公钥再通过一层Hash算法就得到了比特币的地址。
流程可以总结为:私钥 -> 公钥 -> 地址,而且都是不可逆的,可以使用官方提供的程序来产生,当然如果你数学好,你甚至可以在纸上完成计算。
加密技术的运用
拥有了加密技术,区块链究竟是什么样运行的呢?
哈希算法的作用在于保证数据的不可变更,以及以后将会介绍到的工作证明等;
非对称加密在主要应用在数字签名上,要了解的是数字签名是 私钥加密,公钥解密,举个现实的例子可能更生动
A写下一段文字 给小明转10块钱,计算hash值后
2c169b8f47da442e6b22a694fa03dc9af31cf89086baffe0c3cbdf070f8767f0
用私钥加密Hash值,简单表示为 XXX
将文字和 XXX 发送到网络中
网络中的B接到这个消息,用A公布出来的公钥解密 XXX后得到hash值 2c169b8f47da442e6b22a694fa03dc9af31cf89086baffe0c3cbdf070f8767f0
B对收到的文字进行Hash后,发现得出来的值与公钥解密的值一致,说明接收到的文字信息没错
以上的案例说明了数字签名验证的过程。数字签名在区块链的交易中使用颇多,所以后面讲交易的时候,还会详细讲解流程。