ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

有效的解决方案:在php中使用base32编码

2019-10-08 23:30:46  阅读:753  来源: 互联网

标签:decoding php encoding url parameters


我正在为php寻找一个base32函数/类.我发现的不同类别和功能都非常无效.我运行了一个基准测试并得出以下结果:

10000个解码:

base32:2.3273秒

base64:0.0062秒

我使用的base32类是:

http://www.php.net/manual/en/function.base-convert.php#102232

有什么方法更简单吗?

我想使用base32的原因是它不区分大小写,因此我对url参数没有任何问题,这些参数在某些系统(例如电子邮件系统)上总是转换为小写字母.

如果您有更好的小写编码替代方案,我也很乐意听到它们.

解决方法:

对于PHP中的Base32,您可以在此处尝试我的实现:

https://github.com/ademarre/binary-to-text-php

从README文件中的Base32示例复制:

// RFC 4648 base32 alphabet; case-insensitive
$base32 = new Base2n(5, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567', FALSE, TRUE, TRUE);
$encoded = $base32->encode('encode this');
// MVXGG33EMUQHI2DJOM======

它并不慢,它可能会或可能不会比你的基准测试类快,但它不会像base64_encode()这样的内置PHP函数那么快.如果这对您非常重要,并且您并不真正关心Base32编码,那么您应该只使用十六进制.您可以使用本机PHP函数对十六进制进行编码,并且它不区分大小写.

$encoded = bin2hex('encode this'); // 656e636f64652074686973
$decoded = pack('H*', $encoded);   // encode this

// Alternatively, as of PHP 5.4...
$decoded = hex2bin($encoded);      // encode this

十六进制的缺点是与Base32相比,数据通胀率更高.十六进制使数据膨胀100%,而Base32将数据膨胀约60%.

标签:decoding,php,encoding,url,parameters
来源: https://codeday.me/bug/20191008/1875079.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有