zoukankan      html  css  js  c++  java
  • Python中Base64编码与解码

      参考:https://blog.csdn.net/pengjunlee/article/details/91127222

      Base64简介

      Base64是网络上最常见的用于传输8bit字节码的编码方式之一,Base64就是一种基于64个可打印字符(包括a-z,A-Z,0-9,/,+)来表示二进制数据的方法。Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。

      按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)

      Base64编码原理

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

      Base64编码遵循以下规则

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

      ②没76个字符加一个换行符。

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

      转码过程示例

       注意:使用ord函数查看字符串对应的ascii码,例如要查看字符s的assic码,

    ord('s')
    

      对照转换表:结果 c z E z  

       从严格意义上来说,BASE64编码算法并不算是真正的加密算法,它只是将源数据转码成为了一种不易阅读的形式,而转码的规则是公开的(解码很容易)。转码之后的数据具有不可读性,需要解码后才能阅读。 

      注:BASE64加密后产生的字节位数是8的倍数,如果不够位数以=符号填充。

      演示一个编码过程,首先演示一个二进制直接刚好为3位的例如 b'liu'

      转换前 l i u

      先转成ascii码 108 105 117

      在转成二进制 01101100 01101001 01110101

      分成6位一组 011011 000110 100101 110101

      高位补00组成 00011011 00000110 00100101 00110101

      转换成10进制得到4个整数 27 6 37 53

      查表得到 bGl1

      小写b 大写G 小写l 数字1

      最后转码得到 b'bGl1'

    import base64
    print(base64.b64encode(b'liu'))
    # b'bGl1'
    

      在演示假如二进制不是3的整数倍的情况 b'liuy' 

      转换前 l i u y

      先转成ascii码 108 105 117 121

      在转成二进制因为不满足3的整数倍所以在尾部补齐两个八位0  01101100 01101001 01110101 01111001 00000000 00000000

      分成6位一组 011011 000110 100101 110101 011110 010000 000000 000000

      高位补00组成 00011011 00000110 00100101 00110101 00011110 00010000 00000000 00000000

      转换成10进制 27 6 37 53 30 16 

      查表得到 bGl1eQ 

      不足位数使用==代替 最后结果为

      b'bGl1eQ=='

      即补了几位则使用几个=在尾部补充

      

      

      

     
  • 相关阅读:
    iOS 字符串遍历
    ImageView通过matrix实现手势缩放,放大,缩小 ,移动
    Xcode 清理存储空间
    iOS学习之字符串(NSString)的截取、匹配、分隔
    convertRect:toView: 和 convertRect:fromView:方法浅析
    社区团购很火爆,影响到小城市菜市场水果店的生意了
    工业级推荐系统 思维导图
    RecBole推荐系统思维导图
    Flink + 强化学习搭建实时推荐系统 思维导图
    传统开源推荐系统介绍思维导图
  • 原文地址:https://www.cnblogs.com/minseo/p/15138331.html
Copyright © 2011-2022 走看看