全面分析base64

Base64

Base64加密运用非常广泛,在基础密码学题目中会遇到,在pe逆向会遇到、在android逆向中会遇到,在杂项中也会涉及,因此掌握着种加密方式就显得尤为重要。

  1. base64加密与解密图解过程

首先base64会有一个密码本,而base64的灵活运用就体现在密码本的变换,我们还是以基础的密码本来解析base64密码。

全面分析base64_第1张图片

我们先以一个字符串来解释一下加密的过程(每次取三个字符,加密后会变成四个字符)

ONE

ASCII字符

O

N

E

十进制

79

78

69

二进制

01001111

01001110

01000101

每6bit为一组

010011        110100        111001       000101

高位补0

00010011      00110100      00111001     00000101

对应的base64索引

   19            52                          57                  5

对应的base64字符

    T             0                             5                    F

加密后的字符串就是T05F

但是,如果最后不足三位,又是怎样加密的呢?

FIRST

ASCII字符

S

T

 

十进制

83

84

 

二进制

01010011

01010100

 

每6bit为一组

010100       110101       0100

高位补0

00010100     00110101     0010000

对应的base64索引

20               53          4

对应的base64字符

U                1           Q         =

所以加密后的字符串是:RklSU1Q=

Base64加密规则:

3个ASCII字符刚好转换成对应的4个Base64字符。但是,当需要转换的字符数不是3的倍数的情况下该怎么办呢?Base64规定,当需要转换的字符不是3的倍数时,一律采用补0的方式凑足3的倍数

Base64解密过程

我们以上文加密后的字符串来进行解密:RklSU1Q=

ASCII字符

R

k

l

S

对应的索引值

17

36

37

18

索引值二进制

00010001

00100100

00100101

00010010

去掉前两位

010001

100100

100101

010010

每8bit一组

01000110            01001001             01010010

对应ASCII

70(F)               73(I)                82(R)

 

ASCII字符

U

1

Q

=

对应的索引值

20

53

16

 

索引值二进制

00010100

00110101

00010000

 

去掉前两位

010100

110101

010000

 

每8bit一组

01010011      01010100        00(这个是我们加密补全的)

对应的ASCII

83(S)           84(T)

加密与解密就是这样的,base64的变换无非就是更换密码本而已。

接下来我们看看代码是怎么实现的吧!

  1. base64加密与解密实现过程

在很多加密中,都会采用base64加密,在逆向分析中,能够读懂代码,对解出答案是有很大帮助的。因为在逆向中,我们大部分看的都是C语言代码,因此我们就先分析C语言代码怎样实现base64加密。

Base64加密C语言实现:

全面分析base64_第2张图片

上面这个是我在做ISCC所遇到的标准base64加密的伪代码算法

我们来直接分析一下这个代码的关键部分

  • 、开辟一个空间是原来的4/3,用来存放base64加密后的字符串
  • 、每一次取出三个字符用来加密
  • 、然后加密成四个字符

其中“>>”、“<<”是代表移位符号,而“&0x3f”的作用就是将6位便成为8位,在高两位补上0的作用。

针对这样常规的base64解密:

  • 、直接用网上的在线解密工具
  • 、用python脚本来解密

这种标准的base64不会在逆向中单独出现,出现也会是base64的变异,所以解密内容放在第三点中去讲。

Base64代码实现推荐:https://baike.baidu.com/item/base64/8545775?fr=aladdin

  1. base64的灵活运用
    • 、base64对图片的加密

在图片隐写中,出题人会将图片用base64 加密,在线有图片转换成base64的工具

    • 、Base64的变异

全面分析base64_第3张图片

这个代码就是更换了密码本

这个加密变换是更换了密码本的开始的ascll,标准是从65开始的,但是里是从32开始,也就是索引上加上32就是加密后的字符

但是解密我们只需要解出索引值,直接用标准的代替就好。

 

你可能感兴趣的:(密码学,密码学)