base64编解码

作者: 陆_志东 | 来源:发表于2018-09-07 11:17 被阅读0次

    base64是一种用64个字符进行组合来表示任意二进制数据的方法

    原理:

    base64会将3个字节作为一组,不够三个字节的会用\x00来补齐三个字节,并使用=来表示补了几个字节(一个=号表示补了一个字节,两个=表示补了两个字节),然后将这3个字节的数据编码成4个字节.所以使用base64编码后,数据的长度会增加33.33333%

    base64编码的64个字符:

    ['A', 'B', 'C', ... 'a', 'b', 'c', ... '0', '1', ... '+', '/']
    

    由上面的数组可以看出编码后可能会出现+和/所以不能使用b64encode应用于网址编码
    应该使用urlsafe_b64encode. urlsafe_b64encode+变成了- ;将/ 变成了_

    注意:base64和hashlib一样不接收unicode字符,只接受字节(字节数组)
    代码示例:

    import base64
    
    str1 = "哈哈"
    print(len(str1))
    >>2
    normal_bytes = str1.encode("utf-8")
    print(normal_bytes)
    >>b'\xe5\x93\x88\xe5\x93\x88'
    print(len(normal_bytes))
    >>6
    base64_bytes = base64.b64encode(str1.encode("utf-8"))
    print(base64_bytes)
    >>b'5ZOI5ZOI'
    print(len(base64_bytes))
    >>8
    

    由上面看出base64编码后的数据也是二进制数据

    相关文章

      网友评论

        本文标题:base64编解码

        本文链接:https://www.haomeiwen.com/subject/auoqgftx.html