加密和杂凑(Hashing)有什么不一样?

原文标题:What is the difference between encryption and hashing?
原文作者: M157q
译文出自:云子可信官方论坛
本文永久链接:https://bbs.cloudtrust.com.cn/thread-352-1-1.html
译者:云子可信汉化组

在这里插入图片描述

前言

你可能或多或少都有看过或听过「MD5 加密」、「MD5 解密」、「SHA-1 加密」、「SHA-1 解密」、「杂凑加密演算法」。但MD5 和SHA-1 实际上并不是加密演算法,而是杂凑演算法。那么究竟加密跟杂凑到底有什么不一样,又该如何区分,这篇会跟大家好好聊一聊

杂凑(Hash)

其实杂凑在一些压缩演算法或者排序演算法也都有用到,但这边只就资讯安全相关的部分进行讨论。

特性

杂凑演算法的输出又被称做「杂凑值」(hash value)。
无论原文的内容长短,杂凑值都会是固定的长度,不同杂凑演算法的输出长度不同,即输出长度与杂凑演算法有关,不受原文长度影响。
相同的内容作为相同杂凑演算法的输入,得到的输出必定一样。不同的内容作为相同杂凑演算法的输入,得到的相同输出的机率极低。因此,两个原文的内容即便只差一个字,杂凑演算法产生的两个输出内容却会差非常多。
无法将杂凑演算法的输出解回原本的输入,杂凑是单向的。

用途

档案校验码(Checksum)
用来快速判断档案是否和原本相同。

举个栗子:论坛档案下载

有在论坛下载过档案的人应该都很常见到一长串 MD5 或 SHA-1 验证码,就是用来让你快速检查你下载的档案里头的内容,是不是跟上传者上传的档案一样。不一样的话可能就是你载错档案、档案有毁损或档案被人加料了。

不需要被还原的资料
举个栗子:避免明文储存使用者密码
避免直接储存使用者的明文密码,除了避免资料库外泄时,攻击者无需进一步运算就可以直接

常见演算法

  • SHA 系列
  • MD5
  • BLAKE2

在这里插入图片描述

结论

就是一串拿来做检查的字串,但根据使用需求可以有不同的用途。

所以,为什么杂凑不是加密?

杂凑和加密很容易被人搞混的原因,主要是因为,杂凑和加密通常是一起使用的,常常被拿在一起讲,所以久而久之就搞混了。

但其实可以透过以下几点来区分:

  • 加密需要密钥,且可以透过解密得到原文。(加密可逆)
  • 杂凑不需密钥,无法逆向解出原始输入。(杂凑不可逆)
  • 虽然可以透过额外储存的rainbow table 来找寻原始输入,但彩虹表是预先计算并储存下来的, 而不是杂凑演算法本身的设计。

举例

今天如果我拿到一串密文,我是有办法透过解密,得到原始的明文的,而且如果使用非对称式加密的话,我什至还可以验证传送方是不是本人(是否有被进行中间人攻击)。

杂凑演算法在这里也会被使用,通常会被拿来检验传送的讯息是否有被更改过。

传送方附上原始讯息经过某个杂凑演算法得出的杂凑值,接收方在解开这个讯息之后,会透过相同的杂凑演算法来验证。

但如果是拿到一串杂凑值的话,理论上是无法逆向得到原始的明文的,根本无法拿来做资料的传递。

所以别再说出「MD5 加密」、「MD5 解密」、「SHA-1 加密」、「SHA-1 解密」之类的话啦!

猜你喜欢

转载自blog.csdn.net/yzhhz_2018/article/details/83182963