密码学(在西欧语文中,源于希腊语kryptós“隐藏的”,和gráphein“书写”)是研究如何隐密地传递信息的学科。在现代特别指对信息以及其传输的数学性研究,常被认为是数学和计算机科学的分支,和信息论也密切相关。
一、加密分类
1、对称加密:加密解密使用同一套密码。如:RC4,DES,AES。
2、非对称加密:加密解密分别有不同的密码。如:RSA。
3、 哈希算法:又称摘要算法,它的作用是:对任意一组输入数据进行计算,得到一个固定长度的输出摘要。 如:MD4,MD5,SHA-1。
二、对称加密分类
1、流加密(stream cipher)
加密和解密双方使用相同伪随机加密数据流,一般都是逐位异或或者随机置换数据内容,常见的流加密算法如RC4。
2、分组加密(block cipher)
也叫块加密,将明文分成多个等长的模块(block),使用确定的算法和对称密钥对每组分别加密解密。
三、Base64编码
Base64是一种编码方式,这个术语最初是在“MIME内容传输编码规范”中提出的。Base64不是一种加密算法,而是一种基于64个可打印字符来表示二进制数据的表示方法。
1、Base64编码原理
Base64编码要求把3个8位字节(38=24)转化为4个6位的字节(46=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用’=‘,因此编码后输出的文本末尾可能会出现1或2个’='。
每3个8比特(bit)的字节子序列拆分成4个6比特(bit)的字节的拆分过程:
因为6和8的最大公倍数是24,所以3个8比特的字节刚好可以拆分成4个6比特的字节,3**8 =* 4*6。计算机中,因为一个字节需要8个存储单元存储,所以我们要把6个比特往前面补两位0,补足8个比特,所以base64编码后的大小是原来的4/3倍了。
为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来。
索引 | 对应字符 | 索引 | 对应字符 | 索引 | 对应字符 | 索引 | 对应字符 |
---|---|---|---|---|---|---|---|
0 | A | 17 | R | 34 | i | 51 | z |
1 | B | 18 | S | 35 | j | 52 | 0 |
2 | C | 19 | T | 36 | k | 53 | 1 |
3 | D | 20 | U | 37 | l | 54 | 2 |
4 | E | 21 | V | 38 | m | 55 | 3 |
5 | F | 22 | W | 39 | n | 56 | 4 |
6 | G | 23 | X | 40 | o | 57 | 5 |
7 | H | 24 | Y | 41 | p | 58 | 6 |
8 | I | 25 | Z | 42 | q | 59 | 7 |
9 | J | 26 | a | 43 | r | 60 | 8 |
10 | K | 27 | b | 44 | s | 61 | 9 |
11 | L | 28 | c | 45 | t | 62 | + |
12 | M | 29 | d | 46 | u | 63 | / |
13 | N | 30 | e | 47 | v | ||
14 | O | 31 | f | 48 | w | ||
15 | P | 32 | g | 49 | x | ||
16 | Q | 33 | h | 50 | y |
在安卓逆向中,Base64编码的显著特征就是Base64的编码表,即A-Z a-z 0-9 + /,如果加密的字符串中只包含Base64中的字符串,或者以 = 结尾,我们也可大胆猜测是Base64。