转义算法、摘要算法和加密算法

2021-11-13  本文已影响0人  愈强

1. 转义算法

转义算法可以把一个字符转换为另一个(组)字符。
转义算法有以下几个特点:

常见的转义算法有urlencode、base64。
其中urlencode主要对url编码以解决url请求参数中的中文字符、特殊字符等的传递操作。而base64的应用比较广泛,这种算法可以将任意形式的数据转换为仅由64个字符组成的数据串。

有很多在线工具可以做编码解码操作,比如可以在这里做urlencode操作,效果如下:

urlencode展示

需要注意的是,这里是对整个文本内容进行了encode,所以内容中的:// 都被编码了,在实际使用时要按需进行转换。

base64也有线上工具,比如这里,效果如下:

base64编码展示

2. 摘要算法

摘要算法能把一组任意长度的数据映射到一个固定长度的数据上。
摘要算法有以下特点:

常见的摘要算法有MD5、SHA-1、SHA-256等。

摘要算法主要用于文件内容校验,比如网站提供一个较大文件同时附上其MD5值(或其他摘要算法值),用户在下载完成后只需要对比一下本地文件的MD5值和网站上提供的是否一致,就可以知道下载的问题是否有损坏了。

比如下面这样的


Android Studio的下载页面,提供了文件下载地址和用于校验的SHA-256信息

值得注意的是,因为摘要长度是有限的,所以理论上会出现两个数据的摘要结果相同的情况。比如MD5的长度是32位16进制,总数也就是2128个,那么如果有2128+1个文件求MD5,那么必然有两个文件的结果是一样的。不过由于这个数据实在是太大了,所以可以忽略。

2004年,有人破解了MD5(论文在这里),但实际上他并不是通过MD5结果计算出了原文,而是通过某种算法组合出了一组数据,令其MD5结果和目标一致。

3. 加密算法

加密算法就是通过某种手段将原文转换为密文。正常情况下,没有秘钥是无法将密文还原成原文的。
加密算法有以下几个特点:

加密算法又分为对称加密和非对称加密,区别在于对称加密中加密和解密的秘钥是同一个,而非对称加密中加密和解密的秘钥是不同的。

常见的对称加密算法有AES、DES,非对称加密算法有RSA、DSA等。

非对称加密只能加密固定长度的数据且算法效率低(相对对称加密而言),一般用于签名校验和秘钥(用于对称加密)传递的场景。

4. 签名和验签

签名不是一种算法,但是他用到了上面提到的摘要算法和非对称加密算法。

签名的意义在于告诉接收者数据确实是我的而不是别人伪造的。(含义类似于消费时在刷卡单上签名。) 比如Google发布了一款App并对App进行了签名,当用户设备上下载了该App后,通过验签操作就可以确认这个App确实是Google发布的。

下面我们看一下签名和验签操作是如何进行的。

首先对原文做摘要计算,然后使用非对称加密的私钥进行加密。

签名过程

然后当客户拿到数据后,先对原文做摘要,并对密文进行解密(解密秘钥是公钥,任何人都能获得),然后对比二者是否一致,如果一致则可以确认信息的来源。


验签过程
上一篇下一篇

猜你喜欢

热点阅读