javascript - 我已经编写了自己的 javascript Bencode 库,但仍然无法生成 torrent 信息哈希值?

标签 javascript encode bittorrent sha1 info-hash

我到处搜索寻找可用的 JavaScript Bencode 模块,但找不到,所以我决定编写自己的模块来生成 torrent 信息哈希值。

当我按照规范编写函数时,据我所知,该模块可以正常工作。

字典=>对象=>键/值对

列表 => 数组对象 => 数字/值对

整数 => 数字对象

字符串...

无论如何,我解码 torrent 文件的数据,然后对解码后的信息 key 的值进行编码,接下来我使用 Google API 的 SHA-1 模块,并且信息哈希永远不会与原始信息匹配。我真是傻了。

我已经彻底测试了我的模块。我可以解码数据并将其传递给我的编码函数,并且它与原始数据完全匹配,但是当我尝试从编码信息部分值生成哈希时,我得到了不匹配。

我确实相信这是由于 JavaScript 的二进制字符串处理能力差造成的,而且我不知道如何诊断或解决这个问题。

当我根据内容类型 header 从 get 请求输出数据时,字符串的二进制部分显示不同,这就是我得出此结论的原因。

我知道 torrent 文件是 UTF-8 字符编码的,但之后我很无助......

感谢您提前提供的任何帮助。

最佳答案

torrent 文件采用 UTF-8 字符编码,但部分内容不是。 信息字典中的“pieces”键严格采用 ASCII 编码,以 UTF-8 形式检索它会导致我使用 [C] 出错,并且使用 JavaScript 可能也会对您产生同样的错误。

关于javascript - 我已经编写了自己的 javascript Bencode 库,但仍然无法生成 torrent 信息哈希值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14546233/

相关文章:

javascript - 谁能解释一下 (function(){}) 的语法

javascript - 使用 AJAX 从 URL 加载 XML 时如何修复 "Access Control Allow Origin"错误?

c - 如何连接到 c 中的 bit torrent tracker

javascript - 在js中找到多边形的中心点

javascript - Mocha + WebDriverIO - 常用功能

javascript - Javascript(js)是如何加密和解密的?

mysql - MySQL ENCODE 使用什么类型的加密?

java - 使用 FileItemStream 在 Java 中处理二进制文件

c++ - 如何将 BYTE 数组中的两个字节作为 int (或类似的东西)存储?

bittorrent - 如何在不知道 infohash 的情况下从 DHT 节点获取 infohash 和 torrent 元数据?