.torrent 文件包含乱码
Posted
技术标签:
【中文标题】.torrent 文件包含乱码【英文标题】:The .torrent file contains gibberish characters 【发布时间】:2014-06-25 16:27:48 【问题描述】:谁能解释每个 .torrent
文件末尾的乱码字符?
图片显示了可以理解的信息以及乱码部分的一部分。似乎可以理解的部分在我画的粉红色管道处突然结束。
顺便说一下,我是用 UTF-8 编码在 VIM 中查看的,如果我没记错的话应该用哪个 torrent 文件编码。
【问题讨论】:
您为什么希望这些文件是人类可读的? (BitTorrent 文件使用称为Bencoding 的方案进行编码。) 进一步阅读后我的理解是:分隔符和小数总是ASCII字符,所以我可以区分这些。但是,介于两者之间的所有内容都可以是任何编码。 【参考方案1】:您所指的数据是键为pieces
的字典条目的值。你标记的位置前面的6:pieces129140:
表示该条目的key有6个字符的长度,这可以让我们确定key是pieces
。键后的129140
是条目值的长度,以字节为单位。这个数据结构是bencoding的结果。
.torrent
文件中的pieces
字典条目包含连接成一个长字符串的所有片段的 SHA1 哈希值。哈希很重要,因为它们允许用户确保他们下载的片段是有效的。对单个文件使用散列比只对整个文件使用散列更好,因为它减少了浪费的数据;在您的客户意识到数据无效之前,您不必下载整个文件。
SHA1 哈希由 20 个字节组成,它们作为原始字节存储在 .torrent
文件中。这就是数据在您的编辑器中出现格式错误的原因。
pieces
映射到一个长度为20的倍数的字符串。将其细分为长度为20的字符串,每个字符串都是对应索引的片断的SHA1哈希。
取自thisBitTorrent 协议规范文档。
【讨论】:
“字典有一个键,长度为129140个字符”,我认为不是字符数,而是字节数。以上是关于.torrent 文件包含乱码的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Java 中创建包含多个文件的 torrent 文件?