【发布时间】:2018-07-28 00:43:46
【问题描述】:
根据我能找到的所有来源,洋葱/隐藏服务“域”是由this process 生成的:
Generate a 1024-bit RSA keypair
Take the SHA-1 of the public key
Base32 encode the first 80 bytes of the hash
我尝试通过首先generating a memorable vanity URL 和 Scallion 来复制它,“zzzzzzycizaamf47.onion”。然后,我编写了一个 PHP 脚本,从该私钥派生出公钥,去除格式,散列,截断为 10 个字符,并对它进行 base32 编码。首先,我发现了三个不同的“编码为 base32”函数,它们都给出了不同的结果。这是代码,结果在三个函数后注释:
$privKey = 'MIIEpAIBAAKC ~snip~ azScNv5A';
$rsa = new Crypt_RSA();
$rsa->loadKey($privKey);
$pubKey = $rsa->getPublicKey(CRYPT_RSA_PUBLIC_FORMAT_PKCS1);
$pubKey = str_replace(array("\r", "\n", ' ', '=', '-----BEGINRSAPUBLICKEY-----',
'-----ENDRSAPUBLICKEY-----'), '', $pubKey); //
$pubKey = sha1($pubKey);
$pubKey = substr($pubKey, 0, 10);
echo base_convert($pubKey, 16, 32).PHP_EOL; //Result: 68s3ii2
echo crockford32_encode($pubKey).PHP_EOL; //Result: 60rkjcb365hp2d1j
$base32 = new Base2n(5, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567', FALSE, TRUE, TRUE);
echo $base32->encode($pubKey).PHP_EOL; //Result: GAYTSMLDGFRWCNBS
这里出了什么问题?为什么三个“base32”函数给出不同的结果? Here is the code for crockford32_encode 和 here is the code for Base2n。我尝试了几乎所有格式/空白剥离和字符截断的组合,但从未接近所需的“zzzzzzycizaamf47”。
【问题讨论】:
-
将问题发布到Tor 可能会得到更好的结果。
标签: php rsa tor phpseclib base32