我到处搜索寻找一个有效的JavaScript Bencode模块,找不到一个,所以我决定编写自己的,以便生成torrent信息哈希。
在我将函数编写到规范中时,该模块尽我所知。
Dictionary => Objects =>键/值对
List =>数组对象=>数/值对
整数=>数字对象
...字符串
无论如何,我解码了torrent文件的数据,然后对解码后的信息键的值进行编码,然后我使用Google API的SHA-1模块,并且信息哈希永远不会与原始文件匹配。我是愚蠢的。
我彻底测试了我的模块。我可以解码数据传递给我的编码函数及其与原始数据的完全匹配但是当我尝试从编码信息部分值生成哈希时,我得到了不匹配。
我确实认为这是由于JavaScript的二进制字符串处理不佳而我不知道如何诊断或解决此问题。
当我根据内容类型标题从get请求输出数据时,字符串的二进制部分显示不同,这就是我得出这个结论的原因。
据我所知,torrent文件是UTF-8字符编码但在此之后我无助......
感谢您提前提供任何帮助。
答案 0 :(得分:0)
torrent文件是UTF-8字符编码但部分不是。 信息字典中的“pieces”键是严格的ASCII编码,检索它是因为UTF-8会导致我[C]出错,并且可能会用JavaScript做同样的事情。