白帽子教你学安全

python3.0 base64 解密以及base64原理

2017-10-23  本文已影响206人  nice_o

python3.0 base64 解密以及base64原理

python3.0

加密

>>> import base64

>>> s = '明文A'

>>> a = base64.b64encode(a)

>>> print (a)

输出加密后的密文

解密

>>>s=base64.b64decode(a)

>>>print (s)

输出解密后的密文

base32  16  加密解密改为based64.b 32/16 en/de code(a)


base64

定义:8bit字节代码的编码方式之一

用处:在HTTP环境下传递较长的标识信息  具有不可读性

介绍:Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3

原理:

转换过程:3*8=4*6  内存一个字节占8位

转换前:    s      1      3

ASICC  115  49    51

二进制:    01110011        00110001        00110011

6个一组(4组):      011100      110011      000100      110011

计算机是8位8位的储存  6不够就自动补两个高位0

变为      00011100      00110011      00000100      00110011

得到      28          51      4      51

查对表  c           z      E      z

先以“迅雷下载”为例: 很多下载类网站都提供“迅雷下载”的链接,其地址通常是加密的迅雷专用下载地址。

其实迅雷的“专用地址”也是用Base64"加密"的,其过程如下:

一、在地址的前后分别添加AA和ZZ

二、对新的字符串进行Base64编码

另: Flashget的与迅雷类似,只不过在第一步时加的“料”不同罢了,Flashget在地址前后加的“料”是[FLASHGET]

而QQ旋风的干脆不加料,直接就对地址进行Base64编码了


规则:

①把3个字符变成4个字符..

②每76个字符加一个换行符..

③最后的结束符也要处理..

例子

1.

转换前(原文):            aaaaaabb          ccccdddd        eeffffff

                            aaaaaa          bbcccc        ddddee          ffffff

转换后(Base64):          00aaaaaa        00bbcccc        00ddddee      00ffffff

2.二进制

转换前(原文):            11111111        11111111        11111111

                             111111      111111      111111      111111

转换后(Base64)      00111111        00111111        00111111        00111111

3.二进制

十进制                    173        186            118

转换前(原文)          10101101        10111010        01110110

                       101011      011011      101001      110110

转换后(Base64)    00101011      00011011        00101001        00110110

十进制                      43      27      41      54

对应码表中的值    r      b      p      2

base64加密后为rbp2

解码同理,把 rbq2 的二进制位连接上再重组得到三个8位值,得出原码。

上一篇 下一篇

猜你喜欢

热点阅读