当前位置:首页 > 未分类

PHP 如何实现 URL 安全的 Base64 编码

admin2年前 (2024-02-06)未分类899

URL 安全的 Base64

由于标准的 Base64 编码后可能出现字符 + 和 / ,在 URL 中就不能直接作为参数,所以 URL 安全的 Base64 编码,需要把字符 + 和 / 分别变成 - 和 _,另外 = 字符也可能出现在 Base64 编码中,但 = 用在URL、Cookie 里面会造成歧义,所以,很多 URL 安全的 Base64 编码也会把 = 去掉:

function base64_urlencode($str){
    return rtrim(strtr(base64_encode($str), '+/', '-_'), '=');
}

去掉 = 后怎么解码呢?因为 Base64 是把 3 个字节变为 4 个字节,所以 Base64 编码的长度永远是 4 的倍数,因此,需要加上 = 把 Base64 字符串的长度变为 4 的倍数,就可以正常解码了,然后再把 - 和 _ 替换换回+ 和 /:

function base64_urldecode($str){
    return base64_decode(str_pad(strtr($str, '-_', '+/'), strlen($str) % 4, '='));
}


参考文章:https://www.cainiaoxueyuan.com/ymba/46667.html

扫描二维码推送至手机访问。

版权声明:本文由服务端开发技术分享发布,如需转载请注明出处。

本文链接:https://www.htmlcms.cn/?id=6

分享给朋友:

相关文章

PHP如何判断访问来源是微信小程序、公众号平台、APP

    //判断是什么平台     function platform()     {  &n…

MySQL 中 where in 长度过长的解决方法

在使用MySQL数据库时,我们经常会使用 where in 语句来查询一组特定的值,例如:SELECT * FROM students WHERE id IN (1,&n…

PHP去除数组中的 0

1. 使用array_filter()函数$array = [1, 0, 2, 0, 3, 0]; $array = array_filter($a…

git报错: fatal: bad object HEAD

一般问题原因:.git内文件有问题,比如误删除了一些文件(我就是因为.git\objects\pack文件夹过大,删除了这个文件夹)。处理建议: 在其他盘符或文件夹把项目拉下来,然后复制.git文件夹到要操作的文件夹覆盖,然后继续…

thinkphp6 多应用模式下,多个应用都需要使用图片验证码时,会共用验证码,让每个应用使用自己的验证码

1. 关闭框架层的中间件中的默认会话初始化;2. 给各个应用的中间件开启(增加)会话初始化;3. 会话初始化需要 开启/关闭 的中间件:\think\middleware\SessionInit::class。…

thinkphp升级后报错Declaration of think\app\Url::build() must be compatible with think\route\Url::build()

1. 出现这个错误的原因是,你通过命令“composer update topthink/framework”只升级了框架,没有更新多应用扩展模块。2. 只需要composer运行下面代码更新多应用扩展模块到最新版后即可…