2

我正在抓取网站以获取信息,它涉及获取磁铁链接的 sha1 哈希值。

我得到了一个简单的所有磁铁链接,preg_match_all但在我的结果中,我得到了奇怪的结果,我知道十六进制形式的磁铁哈希是 40 个字符长,但我也得到返回 32 个字符长的字符串的结果,其中包含其他非十六进制值。

我的结果中的两个示例,首先是磁力链接中的普通 40 十六进制哈希,

array
    0 => string 'F5AD2D170C033736FD987106F04C3ABD6DF41D14' (length=40)

还有其他奇怪的结果,我不明白哈希在哪里是 32 非十六进制值,

array
    0 => string 'VPR33QQM3L6BFU5FGOZXMBNORAFFSZWW' (length=32)

哈希是否以某种方式打包?我知道它没有完成,pack('H*', $hash)因为它返回哈希的二进制文件?磁铁链接确实有效,因为我已经对其进行了测试。

更多这样你就可以在这个网站上看到这些哈希值的使用

http://eztv.it

通过将鼠标悬停在磁铁链接上并查看磁铁哈希。

谢谢

4

2 回答 2

4

磁铁链接中的哈希可以使用Base32进行编码。在你的例子中,

VPR33QQM3L6BFU5FGOZXMBNORAFFSZWW

变成

ABE3BDC20CDAFC12D3A533B37605AE880A5966D6

这是一个有效的 SHA-1 哈希。

于 2012-06-09T14:46:18.370 回答
1

基本上它不是一个有效的 torrent 信息散列,只有 sha1(40 字节)是有效的,如果你将它作为 torrent 散列传递,一个 torrent 客户端或 bencode 脚本将会失败。

它似乎与:

http://eztv.it/magnet:?xt=urn:btih:VPR33QQM3L6BFU5FGOZXMBNORAFFSZWW 这是值得注意的。

于 2012-06-09T14:43:50.033 回答