2010-08-09 11 views

Répondre

7

Les fichiers Torrent sont hachés à l'aide de SHA-1. Vous pouvez utiliser MessageDigest pour obtenir une instance SHA-1. Vous devez lire jusqu'à ce que 4:info soit atteint, puis rassembler les octets pour le résumé jusqu'à la longueur restante moins un.

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. 
+0

i essayé octets de convertir à la valeur de hachage, mais la valeur de hachage est différente pour (int i = 0; i Ramesh

+0

@Ramesh - le fichier a peut-être été tronqué lorsque vous l'avez enregistré? Avez-vous (peut-être) utilisé un lecteur ou un scanner pour faire cela? De toute façon, vous n'avez pas fourni assez d'informations pour permettre à quelqu'un d'autre de comprendre ce qui se passe réellement. –

+0

@Ramesh: tu as raison, le hachage devrait exister seulement de la clé 'info' du dictionnaire du torrent. Ceci est situé à la fin du fichier torrent, bordé par '4: info' et' e'. J'ai mis à jour la réponse en conséquence. – BalusC

3

BitTorrent Specification

Cela devrait avoir tout ce dont vous avez besoin, à partir d'une ressource plus officielle

+0

En complément de la spécification officielle liée par Nicholas, je recommanderais aussi l'inofficial wiki de spécifications trouvé à: https://wiki.theory.org/BitTorrentSpecification – Encombe

1

Puis-je calculer en utilisant bencode?

Non. Pour l'encodage de métadonnées bittorrent, pas de fichiers réels.

+0

puis-je extraire les méta-données du fichier torrent en utilisant bencode ??? – Ramesh

+0

Je n'en ai aucune idée. Mais c'est une question complètement différente de celle que vous avez posée ici. Pourquoi ne pas vous concentrer sur celui-ci d'abord ... et fournir plus d'informations comme demandé ci-dessus. –

Questions connexes