# 什么是非对称加密？

By [lookingto](https://paragraph.com/@pintel) · 2022-08-01

---

[crowdfund://0xA106936F8cDf71Aa3D262E5eE82A0F0eDc216653?version=factory\_5&network=mainnet](https://etherscan.io/address/0xA106936F8cDf71Aa3D262E5eE82A0F0eDc216653)

01 对称加密是什么？

首先，在讲非对称加密之前，先简单讲一下对称加密。

对称加密也叫做单密钥加密，指的是用同一个密钥对信息进行加密和解密。简单讲就是上锁和开锁都是一把钥匙。

比如在现实生活中，你想寄一封信给你的朋友，为了信的内容不被他人剽窃，你会想着用一把钥匙把信件锁在安全的柜子里，然后再将物品连同柜子一起寄给朋友，而你的朋友只能用你这把钥匙才能打开这个柜子进而取出信件。

这样一来就保证了信件在邮寄过程中不被他人看到。在密码学中以上过程可以理解为如下：

![](https://storage.googleapis.com/papyrus_images/a863fbb29437d9886ca1fc29d9ca61bbae40930350c2525553fa6a765262c88d.jpg)

在上图的过程中，“上锁”和“开锁”都用的同一把钥匙，这把钥匙就相当于对称加密中的“私钥”，而“上锁”和“开锁”过程就相当于“加密”和“解密”过程，“信件”则是我们要加密的信息，信息加密后则是“密文”，解密后则是“明文”。

但是细心的小伙伴可能会想到，信件上锁放入柜子固然安全，但是开这个柜子必须要用上锁的那把钥匙，那么问题是这把钥匙怎么给朋友？

钥匙一旦选择邮寄，那就存在安全隐患，除非亲手把钥匙给朋友，那这样的话干嘛不亲手把信件直接给朋友。所以对称加密的一个问题是密钥配送困难问题。

针对密钥配送这一难题，密码学史上伟大的发明——非对称加密出现了。

02 非对称加密是什么？

非对称加密有一对密钥，分别是私钥和公钥，公钥和私钥一一对应，私钥需要保密，而公钥则是可以公开的。加密和解密不是用同一个密钥。

回到之前的例子，你朋友去配了一对钥匙（钥匙A和钥匙B），钥匙A上锁柜子之后，必须要钥匙B才能开锁柜子。

你朋友把钥匙A邮寄给你，你用这把钥匙把信件锁到柜子中，然后将柜子邮寄给你朋友，你朋友用钥匙B打开柜子取出信件。

细心的小伙伴又想到了，朋友把钥匙A寄给自己的时候，可能会被快递人员偷配钥匙，但是快递人员即使持有钥匙A，他也不能打开柜子，因为钥匙A上锁柜子之后，只有钥匙B才能开锁，整个过程，钥匙B一直在朋友手上，只要朋友不把钥匙B弄丢，这个柜子就只能由朋友打开。

![](https://storage.googleapis.com/papyrus_images/08fb4672b4937e65e42388ec0e654e369688b023fb185caeabca3a0b3d9ffcdc.jpg)

在非对称加密中，钥匙A就相当于公钥，它被人知道也没有关系，钥匙B相当于私钥，它需要持有人小心保存，不能丢失。

“上锁柜子”和“开锁柜子”相对于“加密过程”和“解密过程”，而且在非对称加密中，最重要的是加密和解密用的不是同一把密钥，而是一对密钥，即私钥和公钥。

比特币公钥就是通过私钥推导而来，公钥继续转换变成账户地址，而且是不能反向推导出私钥的，私钥和公钥是一对，用户需要妥善保管好自己的私钥，而公钥和账户地址都是可以公开的。

上述过程体现的是公钥加密，私钥解密。区块链中当别人给你转账的时候，你的收款地址（公钥）是公开给他人的，而转入的资产只有持有私钥的你才可以“解密”它，对它自由支配。

还有一种情况是私钥加密，公钥解密。典型的应用场景就是数字签名，A采用自己的私钥加密文件信息后发送给B，并将公钥也发送给B，B利用这个公钥对信息解密。

如果C和D也有这个公钥，那C和D也可以解密这个文件信息，但是只有持有私钥的A才能加密这个信息，因此可以确保这个文件信息确确实实是由A发出的，这就比较适用于一些公司老总做电子签名，以确保签名是老总签的。

在区块链中，你的收款地址就相当于公钥，人人可以看到，但是如果你要转移你的资产给朋友，你需要输入密码（私钥）进行数字签名，来表示这个资产确确实实是由你发出的。

---

*Originally published on [lookingto](https://paragraph.com/@pintel/CQuIZj6qz94R7pCqotXb)*
