最近在Couresa上跟一门关于加密货币的课程,想加深一下对公钥私钥的理解,今天碰巧找到一篇非常通俗易懂的文章,在这里翻译记录一下。
加密方式主要为以下两种
- 对称性加密
对称性加密又称为私钥加密。 这种加密方式比较容易理解:就是你有一个箱子和一把锁,这把锁只有一种钥匙,但这种钥匙可以被复制成很多把, 任何拥有这种钥匙的人可以打开和锁上这个箱子。
-----这种加密方式安全性不高,任何能获得这把钥匙的人都可以看到你的秘密。
- 非对称性加密
非对称性加密,相对应的,被称为公钥加密。用另一个例子来介绍一下:
你有一个箱子,这个箱子有把特别的锁,如下图所示
这把锁有三种不同的状态:A(关闭), B(开启), C(关闭)
这把锁还有两种钥匙,一种叫做私钥,只有你自己拥有,另一种钥匙叫做公钥,任何人可以拥有。
钥匙的不同之处在于:
私钥:只能顺时针开锁,锁从A状态,转到B状态,再到C状态
公钥:只能逆时针开锁,锁从C状态,转到B状态,再到A状态
例子:小明拥有私钥,他把公钥分给了他的小伙伴们,小红,小绿...
小红想给小明100元,她用自己的公钥把锁从C转到B,打开箱子,放入100元,然后再从B转到A锁上箱子
此时小绿是没有办法解开锁,因为他无法从A状态转到B状态。
(你可能会说,小绿没有办法放钱了,但小明可以有很多个这种锁)
但小明想要取走这100元,他只需要用自己的私钥把锁从A转到B,打开箱子取出钱,然后再从B转到C锁上箱子
所以只有小明的私钥有能力解锁别人用他的公钥加密的箱子
- 数字签名
其实上面的锁还有一个好处,就是能验证小明的身份。
例子:
小明写了一段秘密,用自己的私钥打开箱子,放入自己的秘密,关闭箱子,此时锁状态到C了
然后小明把这个箱子给任何人,告诉他们这里边有他的秘密。别人怎么验证呢?
其实只要用小明的公钥打开箱子(从C状态到A状态),就说明秘密确实是小明的,因为只有小明的公钥能这样打开箱子
这就是用私钥产生的数字签名。
END
由于无法从公钥反推获得私钥,私钥只有本人持有,还可以用私钥产生签名,这就极大的增加了安全性。
其实比特币就是建立在这种公钥加密基础上的货币, 其具体的实现可以根据Mastering Bitcoin 或这门Coursera课学习~