我正在抓取网站以获取信息,它涉及获取磁力链接的sha1哈希。
我用一个简单的preg_match_all
得到了所有的磁链接,但在我的结果中我得到了奇怪的结果,我知道它的十六进制形式的磁铁哈希是40个字符长,但我也得到了返回的结果长度为32个字符且包含其他非十六进制值的字符串。
我的结果中的两个例子,首先是磁链接中的正常40十六进制哈希,
array
0 => string 'F5AD2D170C033736FD987106F04C3ABD6DF41D14' (length=40)
其他奇怪的结果我不明白哈希是一个32非十六进制值,
array
0 => string 'VPR33QQM3L6BFU5FGOZXMBNORAFFSZWW' (length=32)
哈希是否以某种方式打包?我知道它没有用pack('H*', $hash)
完成,因为它返回哈希的二进制文件?磁链接确实可以正常运行。
更多信息,您可以在此网站上看到这些哈希值
将鼠标悬停在磁铁链上并查看磁铁哈希。
由于
答案 0 :(得分:3)
磁链接中的哈希值可以使用Base32进行编码。在您的示例中,
VPR33QQM3L6BFU5FGOZXMBNORAFFSZWW
变成
ABE3BDC20CDAFC12D3A533B37605AE880A5966D6
这是一个有效的SHA-1哈希。
答案 1 :(得分:1)
基本上它不是有效的torrent信息哈希,只有sha1(40字节)有效,如果你把它作为torrent哈希传递,那么torrent客户端或bencode脚本就会失败。
它似乎与:
有关 http://eztv.it/magnet:?xt=urn:btih:VPR33QQM3L6BFU5FGOZXMBNORAFFSZWW
这是注意到的。