gpt4 book ai didi

Javascript Torrent 文件解析

转载 作者:行者123 更新时间:2023-11-29 22:01:21 28 4
gpt4 key购买 nike

到目前为止,我还没有找到任何合适的用 javascript 编码的 .torrent 文件解析器,因此我开始创建自己的解析器。

到目前为止,我能够在 javascript 中重新编码 php bdecoder,我发现的一个问题是较大的 .torrent 文件(如 http://www.vuze.com/content/channel.php?id=53&name=Scam%20School%20(Quicktime%20HD) 中的第二个文件)有时会导致 Uncaught RangeError: Maximum call stack size exceeded Chrome 中的错误。有没有一种方法可以减少 bdecode 函数的递归运行?

除了这个问题,我还无法为成功解码的“.torrent”文件准确生成信息哈希。我对信息字典进行哈希处理,从 info 名称之后开始,到 e“结束标记”结束。但是,与实际的 bittorrent 客户端相比,这会导致不正确的哈希值。我读错文件了吗?

当前代码: http://jsfiddle.net/e23YQ/

谢谢。

最佳答案

使用 readAsTest 或 readAsBinaryString(已弃用)读取 torrent 文件不足以生成准确的信息哈希。为了尽可能保持原生,您必须将文件作为 ArrayBuffer 读取并使用 Uint8Arrays 进行解析。解析时,保存信息字典的开始和结束偏移量,用于生成信息散列。

为了生成准确的信息散列,您必须使用 Sha-1 的 javascript 实现,它允许对 ArrayBuffers 进行散列。 Rusha似乎是一个可行的选择。在 Rusha 中使用 digestFromArrayBuffer 和包含信息字典的初始 ArrayBuffer 的一部分,我们得到一个准确的信息哈希。

使用 ArrayBuffer 消除了我之前遇到的 stackoverflow 问题。

这是调整后的代码: http://jsfiddle.net/e23YQ/5/

关于Javascript Torrent 文件解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23575020/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com