Python和shell中Base64编码使用那些事
来源:互联网 发布:天津外国语大学 知乎 编辑:程序博客网 时间:2024/05/01 10:15
做开发第一个接触的编码方式就是Base64,当时是用url来传输一些参数,传输的两端会用Base64来编码和解码,保证数据不被url转义破坏。
下面是 维基百科 Base64 中的介绍,其实自己实现起来也不是很麻烦。
Base64 是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符。三个字节有24个比特,对应于4个Base64单元,即3个字节需要用4个可打印字符来表示。它可用来作为电子邮件的传输编码。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9,这样共有62个字符,此外两个可打印符号在不同的系统中而不同。
Shell中使用
一般Linux系统中都会有个base64的命令,openssl命令也有base64的选项。
base64 命令
字符串操作,更多参考 man base64
# echo "you are so cool"|base64eW91IGFyZSBzbyBjb29sCg==# echo "eW91IGFyZSBzbyBjb29sCg=="|base64 -dyou are so cool#中文# echo "你真帅"|base645L2g55yf5biFCg==# echo "5L2g55yf5biFCg=="|base64 -d你真帅
openssl命令
$ openssl enc -base64 <<< "good boy"Z29vZCBib3kK$ openssl enc -base64 -d <<< "Z29vZCBib3kK"good boy
Python 使用base64
标准库中提供了base16,base32, base64 好几个接口,最常用的是 base64.b64encode
和 base64.b64decode
,还有针对于url的改进方式 base64.urlsafe_b64encode
和 base64.urlsafe_b64decode
, 这一对方法和标准的base64不同的是针对url改善了64个字符中最后2个,具体的看这里的说明, 结合wiki中的 base64索引表
就明白了。
编码 和 解码
$ python -c "import base64; print base64.b64encode('you are so cool')"eW91IGFyZSBzbyBjb29s$ python -c "import base64; print base64.b64decode('eW91IGFyZSBzbyBjb29s')"you are so cool
注意无法对unicode直接base64编码, 所以请注意字符编码问题。
# python -c "import base64; print base64.b64encode('酷')"6YW3# python -c "import base64; print base64.b64encode(u'酷')"Traceback (most recent call last): File "<string>", line 1, in <module> File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/base64.py", line 53, in b64encode encoded = binascii.b2a_base64(s)[:-1]UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
常用代码片段
经常使用的方式是对编码之后字符串结尾的 =
做剔除 。对于 urlsafe_b64encode
和 b64encode
都适用,针对不同编程语言相互转化的情况请具体参照语言的实现方式。
import base64def base64encode(raw): return base64.urlsafe_b64encode(raw).strip("=")def base64decode(data): return base64.urlsafe_b64decode(data + "=" * (-len(data)%4))
阅读
- how can i decode a base64 string from command line
- base64 中文Wiki
- python2 base64文档
- PyMOTW base64
- how to base64 url decode in python
- Python和shell中Base64编码使用那些事
- Python中进行Base64编码和解码
- Python中进行Base64编码和解码
- Base64系列第二篇 python中使用Base64编码解码
- Base64系列第三篇 python中使用Base64编码解码
- java 中使用base64编码和解码:
- 【Python】Shell MD5使用的那些事
- Java中使用Base64编码
- Base64 编码原理简介和python的base64模块的使用
- base64 shell编码解码
- python进行Base64编码和解码
- Java中使用Base64编码实例
- Linux中使用base64编码中文
- jsp和Action中Base64编码转换
- Base64的使用,解码和编码
- Python中文编码那些事
- Win7,64位,Python中对图片进行 Base64 编码和解码
- python中Base64编码和解码:TypeError: a bytes-like object is required, not 'str'
- JAVA设计模式--抽象工厂模式
- 学习总结:Activity生命周期
- OSX PHP添加intl支持
- 解决虚拟机上的tomcat无法被主机访问的问题
- Dockerfile最佳实践(一)
- Python和shell中Base64编码使用那些事
- 工厂模式(三)--抽象工厂模式
- 纹理特征LBP(local binary pattern,局部二值模式)
- SSH框架从底层数据库到jsp页面响应流程及注意事项
- 一个简单的智能指针的实现
- 字符串函数
- 将url或者字符串转换成MD5格式(md5加密算法)的写法
- Swift 2.2 基础语法
- Problem C