将任意字符串编码和解码为可以安全放入URL查询参数的字符串。
项目描述
查询字符串安全的Base64
将任意字符串编码和解码为可以安全放入URL查询参数的字符串。
问题
urlsafe_b64encode和urlsafe_b64decode从base64不够,因为它们没有对填充字符=进行引号处理
import base64
base64.urlsafe_b64encode('a')
'YQ=='这有两个问题
- =符号被引号包围 
import urllib
urllib.quote('=')
'%3D'- 某些库容忍查询字符串值中的= 
from urlparse import urlsplit, parse_qs
parse_qs(urlsplit('http://aaa.com/asa?q=AAAA=BBBB=CCCC').query)
{'q': ['AAAA=BBBB=CCCC']}但是RFC 3986对查询字符串的规定不明确,因此我们不能依赖所有Web应用程序像urlparse那样处理=字符。
因此,我们认为以下字符:[‘+’,‘/’,‘=’]是不安全的,我们将它们替换为:[‘-’,‘_’,‘.’]。字符+和/已经被base64的urlsafe_*函数处理,所以只剩下=。由于=仅用于填充,我们直接将其删除,并在解码过程中重新添加填充。正因为如此,querystringsafe_base64能够解码填充和不填充的字符串。
解决方案
import querystringsafe_base64
querystringsafe_base64.encode(b'foo-bar')
b'Zm9vLWJhcg'
querystringsafe_base64.decode(b'Zm9vLWJhcg..')
b'foo-bar'
querystringsafe_base64.decode(b'Zm9vLWJhcg')
b'foo-bar'变更日志
1.2.0
- 从编码字符串中移除填充字符。 
1.1.1
- 修复了打包问题。 
1.1.0
- 始终期望字节。 
- 添加类型注解。 
1.0.0
- 支持在解码过程中恢复缺失的填充。 
0.2.0
- 支持Python 3。 
0.1.5
- 将querystringsafe_base64模块移动到根目录。 
- 在测试期间使用install而不是develop。 
0.1.4
- 从发行版中移除bdist_wheel。 
0.1.3
- 安装pandoc(travis)。 
0.1.2
- 将setup.cfg和pypandoc添加到测试中。 
0.1.1
- 添加MANIFEST.in文件。 
0.1.0
- 包结构 
- 测试 
项目详情
    
       关闭
    
      
        
    
    
  
querystringsafe_base64-1.2.0-py2.py3-none-any.whl的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 850913d05558d31a6bdb90711c3ef5ca855d8e1730bf8bc0ca2bcc1ef273c130 | |
| MD5 | a654dee762e024ca087f50939dba953d | |
| BLAKE2b-256 | be13b11c71984a9bcc59dc09ca9b487673731b79fef37422fbeeca7cc54d5d7e |