如何使用Java计算torrent文件的哈希值?我可以使用bencode来计算吗?
答案 0 :(得分:6)
使用SHA-1对Torrent文件进行哈希处理。您可以使用MessageDigest
来获取SHA-1实例。您需要阅读直到达到4:info
,然后收集摘要的字节,直到剩余长度减去一。
注意:此实现适用于大多数种子,但不保证.torrent文件以info键结尾。
File file = new File("/file.torrent");
MessageDigest sha1 = MessageDigest.getInstance("SHA-1");
InputStream input = null;
try {
input = new FileInputStream(file);
StringBuilder builder = new StringBuilder();
while (!builder.toString().endsWith("4:info")) {
builder.append((char) input.read()); // It's ASCII anyway.
}
ByteArrayOutputStream output = new ByteArrayOutputStream();
for (int data; (data = input.read()) > -1; output.write(data));
sha1.update(output.toByteArray(), 0, output.size() - 1);
} finally {
if (input != null) try { input.close(); } catch (IOException ignore) {}
}
byte[] hash = sha1.digest(); // Here's your hash. Do your thing with it.
答案 1 :(得分:3)
这应该包含您需要的所有内容,来自更官方的资源
答案 2 :(得分:1)
我可以使用bencode计算吗?
没有。这是为了编码bittorrent元数据,而不是实际文件。