토런트에 대해 info_hash
값을 계산하려고합니다.Java with bittorent info_hash 계산
d8:announce...info[d6:length...e]e
내가 올바른 해시를 얻을 수없는 것 : 나는 다음과 같이 잘라, StringBuffer
으로 전체 토런트를 참조하십시오. 토런트를 StringBuffer
으로 읽는다면 결국 바이트 문자열이 손상됩니까? 내가 놓친 게 있니?
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());
}
}
다른 질문에 따라 답을 얻을 수 있습니다. 내가 똑같은 일을하려고 할 때 그게 뭔지 알고 싶습니다. – BobMcGee
내가 해결 한 방법은 파일에서 바이트를 읽으면서 해시를 계산하는 것이 었습니다. 그것을 문자열로 읽은 다음 그것을 계산한다면. 그것은 작동하지 않습니다 무언가가 손상 도착. 디스크에서 파일을 읽는 동안 계산하십시오. 귀하의 디코더 클래스에. –