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位值,得出原码。