gpt4 book ai didi

php - 如何将比特种子信息哈希从 Base 32 转换为 Base 16

转载 作者:行者123 更新时间:2023-12-04 18:16:07 29 4
gpt4 key购买 nike

我有一个 Base32 信息哈希。例如IXE2K3JMCPUZWTW3YQZZOIB5XD6KZIEQ ,我需要将其转换为base16。

我怎样才能用 PHP 做到这一点?

我的代码如下所示:

$hash32=strtolower($hash32);
echo $hash32; // shows - IXE2K3JMCPUZWTW3YQZZOIB5XD6KZIEQ
$hash32=sha1($hash32);
$hash16=base_convert($hash32, 32, 16);
echo "</br>";
echo $hash16 // shows - 3ee5e7325a282c56fe2011125e0492f6ffbcd467

在我的代码中,基于 16 的信息哈希无效..

有效的信息哈希是 45C9A56D2C13E99B4EDBC43397203DB8FCACA090
如何获得有效的信息哈希?

谢谢

最佳答案

我给你一个答案,自愿省略 gmp_strval(gmp_init(strtoupper($hash32), 32), 16); 只有 与安装在你的服务器中的 GMP 一起工作。

function convBase($numberInput, $fromBaseInput, $toBaseInput)
{
if ($fromBaseInput==$toBaseInput) return $numberInput;
$fromBase = str_split($fromBaseInput,1);
$toBase = str_split($toBaseInput,1);
$number = str_split($numberInput,1);
$fromLen=strlen($fromBaseInput);
$toLen=strlen($toBaseInput);
$numberLen=strlen($numberInput);
$retval='';
if ($toBaseInput == '0123456789')
{
$retval=0;
for ($i = 1;$i <= $numberLen; $i++)
$retval = bcadd($retval, bcmul(array_search($number[$i-1], $fromBase),bcpow($fromLen,$numberLen-$i)));
return $retval;
}
if ($fromBaseInput != '0123456789')
$base10=convBase($numberInput, $fromBaseInput, '0123456789');
else
$base10 = $numberInput;
if ($base10<strlen($toBaseInput))
return $toBase[$base10];
while($base10 != '0')
{
$retval = $toBase[bcmod($base10,$toLen)].$retval;
$base10 = bcdiv($base10,$toLen,0);
}
return $retval;
}
这个函数,发现 here ,“将任意大的数字从任何基数转换为任何基数”。
您只需要将基数 32 转换为基数 16,因此:
base 32 alphabet 是: ABCDEFGHIJKLMNOPQRSTUVWXYZ234567
$hash32='IXE2K3JMCPUZWTW3YQZZOIB5XD6KZIEQ';
$hash16=convBase($hash32, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567', '0123456789ABCDEF');
//$hash16='45C9A56D2C13E99B4EDBC43397203DB8FCACA090'
这里的问题是 base_convert 错误处理大量数字。

关于php - 如何将比特种子信息哈希从 Base 32 转换为 Base 16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11682019/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com