一个加密串,通过url传过来后怎么也解密不了。
原串:
h1tQYMmnx7jdvowi9KnaEM5dHfamJ+rbaRnvhwhUmRAvyxpA2AGzszx5k9K0qdhiQUq7m42SpNbmDgtK11SzA9N4tvuBDpAaR1axfBJWXBLT20dy7FtYvXIPMLwnSMx/v2j0KkjHvrY=
urlencode后的串:
h1tQYMmnx7jdvowi9KnaEM5dHfamJ%2brbaRnvhwhUmRAvyxpA2AGzszx5k9K0qdhiQUq7m42SpNbmDgtK11SzA9N4tvuBDpAaR1axfBJWXBLT20dy7FtYvXIPMLwnSMx%2fv2j0KkjHvrY%3d
通过$_GET收到的串:
h1tQYMmnx7jdvowi9KnaEM5dHfamJ rbaRnvhwhUmRAvyxpA2AGzszx5k9K0qdhiQUq7m42SpNbmDgtK11SzA9N4tvuBDpAaR1axfBJWXBLT20dy7FtYvXIPMLwnSMx/v2j0KkjHvrY=
对比发现,+转成%2B,收到的时候变成了空格。
解决方法:
传之前做urlencode两次:urlencode(urlencode($str))
两次urlencode后的串变成了:
h1tQYMmnx7jdvowi9KnaEM5dHfamJ%252BrbaRnvhwhUmRAvyxpA2AGzszx5k9K0qdhiQUq7m42SpNbmDgtK11SzA9N4tvuBDpAaR1axfBJWXBLT20dy7FtYvZuUePw%252F26RAv2j0KkjHvrY%253D
奇葩的是,通过thinkphp的$_GET收到的串不用decode,直接就是正常串:
h1tQYMmnx7jdvowi9KnaEM5dHfamJ+rbaRnvhwhUmRAvyxpA2AGzszx5k9K0qdhiQUq7m42SpNbmDgtK11SzA9N4tvuBDpAaR1axfBJWXBLT20dy7FtYvXIPMLwnSMx/v2j0KkjHvrY=
其它系统要decode一次。。。