把base64加密后在url传输,会把“ “,”/”分别替换为-,_,以及会把末尾的等号“=”去掉。 另外base64加密后的长度必然是4的倍数,所以可以根据这个还原“=”号 解密的过程就是这个的逆向。 注意:python必须补齐=号才正常,不然会抛错no padding. python
把base64加密后在url传输,会把“ “,”/”分别替换为”-”,”_”,以及会把末尾的等号“=”去掉。
另外base64加密后的长度必然是4的倍数,所以可以根据这个还原“=”号
解密的过程就是这个的逆向。
注意:python必须补齐=号才正常,不然会抛错no padding.
python版本:
def base64_url_decode(inp): # 通过url传输时去掉了=号,所以需要补上=号 import base64 return base64.urlsafe_b64decode(str(inp + '=' * (4 - len(inp) % 4))) ? def base64_url_encode(inp): import base64 return base64.urlsafe_b64encode(str(inp)).rstrip('=')
php版本:
function base64url_encode($data) { return rtrim(strtr(base64_encode($data), '+/', '-_'), '='); } function base64url_decode($data) { return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT)); }
原文地址:使用base64加密在URL传递(python和php版本), 感谢原作者分享。