Ich versuche, den info_hash
Wert für einen Torrent zu berechnen. Ich lese den ganzen Strom in StringBuffer
, schneiden Sie es dann wie folgt aus:Bittorent info_hash mit Java berechnen
d8:announce...info[d6:length...e]e
Ich kann nicht scheinen, um die richtige Hash zu bekommen. Liest das Lesen des Torrents in eine StringBuffer
die Byte-Zeichenfolge am Ende? Fehle ich etwas?
public void calculateInfoHash(){
try{
int index = rawData.indexOf("4:info") + 6;
int end = rawData.length() - 1;
String info = rawData.substring(index , end);
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(info.getBytes());
byte[] digest = md.digest();
for (byte b : digest) {
// print byte as 2 hex digits with lead 0.
//Separate pairs of digits with space
//System.out.print("%");
System.out.printf("%02X", b & 0xff);
}
System.out.println();
}catch(Exception e) {
System.out.println(e.toString());
}
}
Basierend auf Ihrer anderen Frage haben Sie eine Antwort. Ich würde gerne wissen, was es war, während ich versuche, das Gleiche zu tun. – BobMcGee
Die Art, wie ich es gelöst habe, war, den Hash zu berechnen, während ich Bytes aus der Datei lese. Wenn Sie es in eine Zeichenfolge einlesen und dann berechnen. es funktioniert nie etwas wird beschädigt. Berechnen Sie es, während Sie die Datei von der Festplatte lesen. in Ihrer Decoderklasse. –