想要了解区块链先要知道区块链是如何形成的。
最基础的2个条件哈希算法、加密
哈希和加密比作两台搅拌机的话,那么我们会看到这样一个结果:把一种物品分别丢到这两台机器里,它们都可以把同一种东西变得面目全非。所以这就难免会使一些初学区块链知识的朋友对这两个基本概念产生混淆,这就是本文将这两个概念放在一起进行学习的主要原因。这篇文章分为两个部分,第一部分阐述二者的基本概念和原理,第二部分讲解二者的区别。
哈希 Hash
哈希(Hash)不是数据结构中的哪个HASH表算法,他只是将目标文本转换成具有相同长度的、不可逆及无冲突的杂凑字符串
不可逆可以理解为
相对于加密来说,哈希的概念和原理比较简单,它其实就是一种算法,能把任意长度的任何内容(数字、字母、文章、图片、视频……)转换成一串看似没有规律的固定长度的字母符号(哈希值),并保证结果唯一,而从这个结果几乎没有办法推算出原始数据。
假如我们把哈希(Hash)比作炒菜,那么哈希就像炒菜一样,用的原材料不同,炒出来的菜也各不相同。我们可以根据菜谱做菜,却不能用做出来的菜推断出炒菜时用了哪些材料。
加密 Encrypt
加密(Encrypt)是将目标文本转换成具有不同长度的、可逆的密文。
对于加密,我们经常听到两个词:对称加密和非对称加密。在区块链领域,我们接触到最多的是非对称加密,为了便于理解,我们先学习什么是对称加密。
所谓不可逆,就是当你知道x的HASH值,无法求出x;
所谓无冲突,就是当你知道x,无法求出一个y, 使x与y的HASH值相同。
在中学数学里我们接触过轴对称的概念,所谓的轴对称简单说来就是一种东西的左右、上下或者前后等相对于中间的某一条线(对称轴)来讲,它们是一样的。同理对称加密中,我们把要加密的内容看做中间的那一条线(对称轴),则它前后所对应的加密和解密使用到的工具是一样的。例如我们俩手里都有一本相同的密码本,我要给你发送一条信息叫做“我爱你”,于是我拿出密码本找出这三个字所对应的密文:I love you然后发送给你。你收到信息后,拿出密码本招到密文“I love you”所对应的信息:我爱你。
这种加密方式非常厉害,估计要是不告诉你算法很难算出答案,但它一个缺点,假设有人获取了密码本,那我们之间的小秘密可能就要被人知道了。
那有没有一种加密方法能够阻止破解呢?答案是“非对称加密”。
非对称加密
被电视剧《西游记》洗过脑的朋友对这样的场景一定不会陌生:
某某神仙的小宠物,因为偷吃了主人的仙丹从而变成了人的模样,来到人间准备半路捉了唐僧,吃了他的肉。很多时候这样的小妖怪,连孙悟空都难以制服,于是只好去求助神仙帮忙。只见神仙从怀里拿出一种神秘武器,朝小妖怪身上一指,小妖怪就现出了原形。
理解非对称加密,我们需要记住两个名词:公钥和私钥。公钥就是可以公开的钥匙,而私钥很显然就只能自己知道了。公钥和私钥总是成对出现,一阴一阳。结合上文提到的《西游记》中的场景,我们做一个类比,虽然可能不太恰当,但是有助于你理解。
公钥=仙丹 私钥=神秘武器
当我准备给你发送一条信息(宠物)的时候,我用你的公钥(仙丹)改变信息(宠物)的样子,当你收到信息(宠物)后,用私钥(神秘武器)便可识别出我给你发送了什么。这样做的好处是即时半路信息(宠物)被人截获了,他也不知道我发给你的是什么。
细心的你可能发现了一个问题:既然你的公钥是公开的,那么就可能有不明身份的人冒充我, 使用你的公钥加密然后给你发信息,叫你往我的卡上打钱。
别忘了,我也是有公钥和私钥的人。为了避免这种情况的发生,我把发送的内容用自己的私钥进行加密,当你接收到内容后,使用我的公钥核实,如果二者匹配,那么你就知道这条信息是我发的了.
总结一下:非对称加密就是指需要两个秘钥来进行加密和解密,即加密和解密所使用的“密码本”不是对称(一样)的。它的作用有两个:1.保护消息内容; 2.让消息接收方确定发送方的身份.
接下来要辨别哈希和加密的不同就很容易了,具体来说,两者有如下重要区别:
1.哈希生产出来的东西长度一致,而加密生产的东西长度取决于原料的长度;
2.哈希生产出来的东西看不出原材料,而加密是可以看出原材料的。
所以,如果被保护数据仅仅用作比较验证,在以后不需要还原成明文形式,则使用哈希;如果被保护数据在以后需要被还原成明文,则需要使用加密。
一天一点点,一年就自由。
领取专属 10元无门槛券
私享最新 技术干货