python3 base64 url docode 报错: binascii.Error: Incorrect padding

python3 base64 url docode 报错: binascii.Error: Incorrect padding

使用golang 对url进行base64 编码,然后用python3 代码对编码结果进行解码,python 代码抛出一下异常, 经过分析和查询文档得知,由于base64编码结果必须是4的整数倍,缺少的字符可以用"="填充,最少填充一个,最多填充三个即可,填充方法:s += b’=’ * (-len(s)%4)

1. 错误信息

Traceback (most recent call last):
File “d:/GitCode/AutoTest/tools/download.py”, line 69, in
upload_url = get_upload_url()
File “d:/GitCode/AutoTest/tools/download.py”, line 27, in get_upload_url
return url_decode(reponse[“data”])
File “d:/GitCode/AutoTest/tools/download.py”, line 12, in url_decode
return base64.urlsafe_b64decode(data).decode(“utf-8”)
File “C:\Python\Python38\lib\base64.py”, line 133, in urlsafe_b64decode
return b64decode(s)
File “C:\Python\Python38\lib\base64.py”, line 87, in b64decode
return binascii.a2b_base64(s)
binascii.Error: Incorrect padding

2. golang 代码

import (
	"encoding/base64"
	"fmt"
)

func main() {
	uri := []byte("http://127.0.0.1:9000/api/project/s")
	// 对url进行base64编码
	encuri := base64.RawURLEncoding.EncodeToString([]byte(uri))
	fmt.Println(encuri)//aHR0cDovLzEyNy4wLjAuMTo5MDAwL2FwaS9wcm9qZWN0L3M
}

3. python 代码

#-*- coding:utf-8 -*-
import base64

s = b'''aHR0cDovLzEyNy4wLjAuMTo5MDAwL2FwaS9wcm9qZWN0L3M'''
print(len(s))#47
#填充 "=" , 使被解码串为4的整数倍
s += b'=' * (-len(s)%4)
print(len(s))#47
print(base64.urlsafe_b64decode(s).decode("utf-8"))# http://127.0.0.1:9000/api/project/s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值