Base64编码

Python base64模块是用来作base64编码解码的。

python2中:

import base64  
str1 = u'我是一个字符串'
str2 = base64.b64encode(str1)  
str3 = base64.b64decode(str2) 

python3中:

base64.b64encode必须接收二进制数据

base64.b64decode得到的结果为二进制数据

import base64 

str1 = '我是一个字符串' 

str2 = base64.b64encode(str1.encode(encoding='utf8')) 

str3 = base64.b64decode(str2).decode()

Python base64模块真正用的上的方法只有8个。

encode,decode

专门用来编码和解码文件的,也可以对StringIO里的数据做编解码;

encodestring,decodestring

专门用来编码和解码字符串

b64encode和b64decode

用来编码和解码字符串,并且有一个替换符号字符的功能。这个功能是这样的:因为base64编码后的字符除
英文字母和数字外还有三个字符 + / =, 其中=只是为了补全编码后的字符数为4的整数,而+和/在一些情况下需要被替换的,b64encode和b64decode正是提供了这样的功能。至于什么情况下+和/需要被替换,最常见的就是对url进行base64编码的时候。

urlsafe_b64encode和urlsafe_b64decode

标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。

  为解决此问题,可采用一种用于URL的改进Base64编码,它不在末尾填充'='号,并将标 准Base64中的“+”和“/”分别改成了“-”和“_”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增 加,并统一了数据库、表单等处对象标识符的格式。

这个就是用来专门对url进行base64编解码的,实际上也是调用的前一组函数。

 

各种经过Base64加密后的下载软件地址

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

  如thunder://QUFodHRwOi8vd3d3LmJhaWR1LmNvbS9pbWcvc3NsbTFfbG9nby5naWZaWg==

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

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

  如www.baidu.com/img/sslm1_logo.gif变成

  AAwww.baidu.com/img/sslm1_logo.gifZZ

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

  如AAwww.baidu.com/img/sslm1_logo.gifZZ用Base64编码得到

  QUF3d3cuYmFpZHUuY29tL2ltZy9zc2xtMV9sb2dvLmdpZlpa

  三、在上面得到的字符串前加上“thunder://”就成了

  thunder://QUF3d3cuYmFpZHUuY29tL2ltZy9zc2xtMV9sb2dvLmdpZlpa

  另:

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

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

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值