什么是加密
in 我也不知道该怎么分类姑且就放在这里吧 with 0 comment

什么是加密

in 我也不知道该怎么分类姑且就放在这里吧 with 0 comment

今天看到v2的一篇帖子(戳我直达原文)中的一条回复。

肉眼看不出的都是加密。哈哈
比如:MD5 加密,很多人也是这样说

所以这里感觉很有必要记录一下什么是加密算法什么不是加密算法。

加密算法的定义

根据维基百科的定义(戳我直达原文):

在密码学中,加密(英语:Encryption)是将明文信息改变为难以读取的密文内容,使之不可读的过程。只有拥有解密方法的对象,经由解密过程,才能将密文还原为正常可读的内容。

这样就意味着加密算法满足以下两个条件:

  1. 加密后的数据不可读
  2. 可以进行解密

MD5

MD5这类哈希函数的本意是进行数据的完整性校验,所以他们的名字叫做信息摘要算法。

但可能最常见的就是某类宣传“我们的数据经过MD5加密”了。这么说其实很不严谨,因为MD5不符合加密算法的条件之二——可以进行解密。

当然也有人会讲我可以使用MD5的数据库反查或者使用彩虹表。但请注意认真阅读这句话“拥有解密方法的对象,经由解密过程,才能将密文还原为正常可读的内容”。

举个栗子的话硬盘中的大姐姐视频,无论哪一部使用MD5都会是一个定长的字符串,但是我却无法根据这个字符串获得大姐姐的内容。

不过如果我把这部大姐姐拷给A同学,他对大姐姐电影做MD5运算如果值相同,那么我们看的就是同一部电影。

同时MD5存在哈希碰撞的可能,这也会让解密工作变得很复杂(虽然碰撞的概率极低)。

Base64

Base64是一个很常见的编码,这种算法看似满足了加密算法的两个条件,不过码表是一个公开的而已。

这种编码严格的讲“数据没有被加密,只是换了一种编码”。所以它并不能算加密算法。

这就好像我们同一句话用了德语来讲,但是我并看不懂德语一样。

一个简单的加密算法

我记得在大学在几乎毫无基础的时候去打ctf,虽然过程还算不错但是碰到密码学的题目都会很头痛。在看密码学的课程时候,第一个加密算法都一定是所谓的凯撒加密了。

说起来凯撒加密的历史要比计算机还有久远,他的作者是罗马共和时期的凯撒,这种加密被用来他与他的将军之间通讯。

凯撒加密的核心是一种替换加密,比如将一句换中的所有的A替换成D,B替换成E,以此类推:
iQYqKJ.png

这样会得到一个全新的字母表:
iQYObR.png
上面是原先的字母顺序,下面的是加密后的字母顺序。

比如:l oryh oloxr

Comments are closed.