Sha 1哈希和他们的长度与比特洪流协议(磁铁)?

时间:2012-06-09 14:30:44

标签: php hash sha1 packed

我正在抓取网站以获取信息,它涉及获取磁力链接的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

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

由于

2 个答案:

答案 0 :(得分:3)

磁链接中的哈希值可以使用Base32进行编码。在您的示例中,

VPR33QQM3L6BFU5FGOZXMBNORAFFSZWW

变成

ABE3BDC20CDAFC12D3A533B37605AE880A5966D6

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

答案 1 :(得分:1)

基本上它不是有效的torrent信息哈希,只有sha1(40字节)有效,如果你把它作为torrent哈希传递,那么torrent客户端或bencode脚本就会失败。

它似乎与:

有关

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