美文网首页
转义算法、摘要算法和加密算法

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

作者: 愈强 | 来源:发表于2021-11-13 00:45 被阅读0次

    1. 转义算法

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

    • 算法和字符映射表是公开的
    • 转换操作是可逆的
    • 转换后的数据长度和原文长度正相关。

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

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

    urlencode展示

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

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

    base64编码展示

    2. 摘要算法

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

    • 算法是公开的
    • 转换操作是不可逆的
    • 转换后的数据长度和原文长度无关
    • 摘要结果通常以16进制的形式表现

    常见的摘要算法有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发布的。

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

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

    签名过程

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


    验签过程

    相关文章

      网友评论

          本文标题:转义算法、摘要算法和加密算法

          本文链接:https://www.haomeiwen.com/subject/frdazltx.html