编程语言
首页 > 编程语言> > 有效的解决方案:在php中使用base32编码

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

作者:互联网

我正在为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