# VICOINDAO 一、区块链小白初级教程34.哈希和密码学

By [VICOINDAO](https://paragraph.com/@vicoindao) · 2022-01-06

---

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

我们之前讲过，区块链的四大核心技术分别是密码学、分布式账本、共识机制、以及智能合约。而密码学又是其中最重要的一部分，因为密码学保护区块链体系的安全，它可以说是区块链的基石，其它技术正是以此为基础，才搭建出区块链这座高楼大厦。

区块链主要应用的密码学有两个部分，一个是哈希算法，另一个是非对称加密。而这节课，小 K 君主要讲一下，区块链密码学中的“哈希算法”是什么？

  

![](https://storage.googleapis.com/papyrus_images/709315e72f64679f3d5e956f33c8a1b6be444220b099d0b41ecded035cb681ce.png)

简单来说，哈希算法就是一种特殊的函数，不论我输入多长的一串字符，只要通过这个函数，都可以得到一个固定长度的输出值。就好比我们的身份证号码一样，无论你是北京人、还是上海人，每个人的身份证号码都是 18 位而且全国唯一。

同理，哈希实际也是一种压缩映射，它可以把任意长度的输入变换成固定长度的输出。永远都是固定 256 比特的长度。这个得到的输出值就叫做哈希值。

  

![](https://storage.googleapis.com/papyrus_images/d861afd09785d476b5ea872d5329257b2111e6033d22959f947e8e0e4f8dd8b4.png)

哈希算法有三个特点，分别是单向性、抗篡改和抗碰撞，它们赋予了区块链不可篡改、匿名等特性，并保障了整个区块链体系的安全。

先说第一个特点，单向性。所谓的单向性，就是指在哈希函数中，由输入可以得到输出，但通过输出却几乎不可能反推回输入。比如，我们输入已知字符串 A ，得到哈希值是 F(A)，但是我们通过这个哈希值 F(A)，却没有办法反推回来得到我们输入的数据。

  

![](https://storage.googleapis.com/papyrus_images/6d57bc5f8443818f305f556007367943373438a25a0bc68e700d728af277e191.png)

区块链在数据打包成区块的过程中，数据都会通过哈希算法进行加工，正是基于哈希算法的单向性，区块链才有效保护了我们信息的安全性。

哈希算法的第二个特点是抗篡改能力。所谓的抗篡改能力就是指，对于任意一个输入，哪怕是很小的改动，比如一个标点符号，其哈希值的变化也会非常大。

  

![](https://storage.googleapis.com/papyrus_images/0865bdaf7c2dfdf2a6c3fe90ad1b6ccb92d23c3a6f97b770accd04792137c7b3.png)

它的这个特性在区块与区块的连接中，就起到了关键性的作用。

区块链的每一个区块，都会以上一个区块的哈希值作为标识，通过哈希算法再进行加工，这样后面区块不仅可以查找到前面的所有区块，也可以验证前面区块数据有没有被更改，除非有人能破解整条链上的所有哈希值，否则，数据一旦记录在链上，就不可能被篡改。

哈希算法的第三个特点是抗碰撞能力。所谓碰撞，就是输入两个不同的数据，最后得到了一个相同的输出结果，就跟我们逛街时候撞衫一样。

  

![](https://storage.googleapis.com/papyrus_images/c12acec35c95c5094679725556db5cb8e91bfa864fd0c73ba62c716f719d5983.png)

而抗碰撞，就是对于大部分的输入，都能得到一个独一无二的输出。注意，这里只能说出现碰撞的概率极低，但不意味着不存在碰撞，因为现存的任何一种哈希算法在概率学上都是无法证明不会发生碰撞的。

哈希算法的第三个特点主要应用在区块链的账户地址中，在区块链的世界中，任何一笔交易或者账户的地址都是完全依托于哈希算法生成的，这样做的目的就是保证交易或者账户地址在区块链网络中的唯一性，无论我这笔转账转了多少钱或转给了多少个人，在区块链这个大账本中都是唯一的存在。

总的来说，哈希算法在区块链技术中是最基础的存在，它就像是我们体内的白细胞，不仅区块链的每个部分都离不开它，而且它还赋予了区块链种种特点，保护着整个区块链体系的安全。

  
  

之前我们也讲过，区块链中主要应用的密码学算法有两个部分，一个是哈希算法，另一个是非对称加密。而今天，我们就来讲一下，区块链密码学中的“非对称加密”是什么？

简单来说，非对称加密就是用来对内容进行加密的一种特殊方法。不过在具体解释非对称加密之前，得先讲一下密码学的其他知识点：

当前密码学中的加密解密方式主要能分成两类，分别是对称加密和非对称加密。这两个加密体系的构成都是一样的，都包括：加解密算法、加密密钥、解密密钥。

比如我们日常生活中，总用到的钥匙跟锁，其中我们开门用的钥匙，在密码学中就是秘钥，而关门的锁，就是加密解密算法。

  

![](https://storage.googleapis.com/papyrus_images/c118677ed689d5e61f0feced6822bee711f4f2cab05e497d768a44242272937b.png)

在加解密系统中，加解密算法自身是固定不变的，并且一般是公开可见的，密钥则是较为私密的东西，在加密过程中，我们是通过加密算法和加密密钥，对明文（要加密的内容）进行加密，进而获得密文（加密后的内容）。解密过程则相反，是通过解密算法和解密密钥，对密文进行解密，获得明文。

其中像锁和钥匙这种，单独只有一个秘钥，既可以用于加密，又可以用于解密的方式，就叫做对称加密。

  

![](https://storage.googleapis.com/papyrus_images/0ae0fcdc0d767c475cd439a7269f599363e9166761266746ee2f9fe584c00e8b.png)

反之，加密与解密过程用的不是同一个秘钥，这种加密方式就是非对称加密。非对称加密比较特殊，会产生 2 个秘钥，最核心的被称之为私钥，它由我们自己保留。另一个会被公开出来，叫做公钥。

它们有个特点，私钥加密的内容，通过公钥可以解密读取出来，反之通过公钥加密的内容，也可以由私钥解密读取出来，就好像双胞胎的心灵感应一样。

  

![](https://storage.googleapis.com/papyrus_images/08a081ec804fb48282e349ecb4c2503eccad6a1141117626fdd07756f93489f5.png)

非对称加密在区块链中的主要用途，并不是为了保护内容的隐私性，而是为了防止身份被冒充。

比如我们在区块链网络上进行一笔交易时，我没有办法确定交易的是不是你本人，这个时候，就可以让你把数字签名发过来（数字签名就是用私钥加密的一段内容），然后我通过已经公开的公钥进行破解。

  

![](https://storage.googleapis.com/papyrus_images/c125acb07d4b240d08e5a20b21c19335b1682c96e8b0506e7957b2996e28788a.png)

因为私钥只由你本人保留，如果我能用与之对应的公钥成功破解，就说明是你本人在进行操作，如果不能破解，则说明是别人盗用了你的身份。以此解决了“我是我，这是我在交易”的问题。

总的来说，密码学是区块链网络中最基础的存在，它不仅保护了整个网络的安全，更解决了很多交易中的证明问题。或许随着量子计算等新技术的出现，有人会质疑它的安全，但是要知道，密码学也在随时代而进步，要是真的到了量子计算商用的那天，区块链密码学也一定会成为更加安全的存在。

  

【welcome to join us】 WeChat1：victeam005 WeChat2：shijie20170405 Telegream：[https://t.me/VICOINDAOCHAT](https://t.me/VICOINDAOCHAT) Twitter：@VICOINDAO

---

*Originally published on [VICOINDAO](https://paragraph.com/@vicoindao/vicoindao-34)*
