1.前言
由于实际项目开发过程中,会遇到相当多的接口对接,而往往接口对接第一步的难点就是验签加解密。
这是一个很麻烦的事情,尤其是对于不熟悉加解密的同学,单单是验签可能就需要花费一两天、甚至都难以搞定。
反过来,对于逆向工作来说,如果你不清楚对方使用的哪种加密算法,你也很难找到相应的思路去逆向解密。
因此本文将带大家过一遍常用的加解密算法,基本能覆盖当前绝大部分的场景。
2.对称加密
首先来看最经典的对称加密算法,也就是最简单的一种加密算法。
正如其名称所示,它是对称的,意思就是加密与解密的过程非常相似,就像镜子的正反面。
2.1 凯撒密码
历史上曾被用于战时信息传递的一个非常典型的算法是凯撒密码,它的加密方式如下:
- 对字母表中的每个字符用固定偏移量(如+3)进行替换。
比如abc
,通过偏移量+3后,得到的密文就是def
。
而对应的解密方法当然就是将这个密文的偏移量-3
了。
虽然如今我们看起来很简单,但如果是第一次接触这样的加密信息,短时间内其实还是不太好想到相应解密方式的。
2.2 替换加密
由于上面这种加密方式过于简单粗暴,一旦被人知道后,就很难再次起到同样的效果,所以而进一步的就有密码本这类东西。
它的加密解密过程同样是对称的,而媒介就是这个密码本。
比如将“你好世界”这四个汉字映射为四个数字4689
。
那么你将这个数字发送给另一个人,中间无论谁看到了这个数字、在没有这个密码本的情况下,都会将其认为是一串无意义的数字。
而密码本便记录了汉字与加密数据之间的映射关系,解密方式便是通过数字结合密码本反向映射,还原信息。
不过如今这种加密方式已经基本没人用了,至少互联网上很少有人用。
2.3 异或加密
上面两种加密方式之所以在互联网使用的很少,主要还是因为其运行的效率不高、用起来也不够简洁,所以更适合应用于现实。
而异或加密不一样,虽然它同样是对称加密算法,但由于它可以非常高效的对于字节进行加密,所以在如今的互联网上仍然会有人使用。
比如网易云音乐下载到本地的音乐文件,就是通过异或加密算法进行加密的。