Sha 1 哈希值及其长度与 Bit Torrent 协议(磁铁)?

Gri*_*iff 3 php hash sha1 packed

我正在抓取网站信息,其中涉及获取磁力链接的 sha1 哈希值。

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

我的结果中有两个例子,首先是磁力链接内的正常 40 十六进制哈希值,

array
    0 => string 'F5AD2D170C033736FD987106F04C3ABD6DF41D14' (length=40)
Run Code Online (Sandbox Code Playgroud)

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

array
    0 => string 'VPR33QQM3L6BFU5FGOZXMBNORAFFSZWW' (length=32)
Run Code Online (Sandbox Code Playgroud)

哈希是否以某种方式打包?我知道它还没有完成,pack('H*', $hash)因为它返回哈希的二进制?正如我测试的那样,磁力链接确实有效。

更重要的是,您可以在该网站上看到这些哈希值的使用

http://eztv.it

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

谢谢

Chr*_*ris 5

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

VPR33QQM3L6BFU5FGOZXMBNORAFFSZWW
Run Code Online (Sandbox Code Playgroud)

变成

ABE3BDC20CDAFC12D3A533B37605AE880A5966D6
Run Code Online (Sandbox Code Playgroud)

这是有效的 SHA-1 哈希值。