Я хэширую с некоторыми строками (идентификаторами) SHA-1 и сравниваю их с другими хешированными (также с SHA-1) строками (которые относятся к элементам), и я хочу распределить идентификаторы среди элементы. Я хочу распространить их с заявлением (hashedId
метод SHA-1
public static String simpleHashFunc(String a) {
try {
MessageDigest md = MessageDigest.getInstance("SHA-1");
byte[] messageDigest = md.digest(a.getBytes());
BigInteger no = new BigInteger(1, messageDigest);
String hashtext = no.toString(16);
while (hashtext.length() < 32) {
hashtext = "0" + hashtext;
}
return hashtext;
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
Испытательные линии
int counter1 = 0, counter2 = 0, counter3 = 0, counter4 =0;
for (int i = 0; i < topics.size(); i++) {
String tempHash = Broker.simpleHashFunc(topics.get(i).getBusLine().getBuslineId());
if (tempHash.compareTo(hashedBrokers.get(0)) == -1) {
counter1++;
//Distribution to element1
} else if (tempHash.compareTo(hashedBrokers.get(1)) == -1) {
counter2++;
//Distribution to element2
} else if (tempHash.compareTo(hashedBrokers.get(2)) == -1) {
counter3++;
//Distribution to element3
} else {
System.out.println("Cant go to broker: " + topics.get(i).getBusLine().getBuslineId());
counter4++;
}
}
System.out.println(counter1 + " " + counter2 + " " + counter3 + " " + counter4);
//The majority of IDs go to to else { } and the counter4 has the greatest number.
Ожидаемые результаты:
Из 37ID: от 20 до элемента1, от 10 до элемента2, от 7 до элемента3
Ожидаемые результаты:
Из 37ID: от 25 до элемента1, от 10 до элемента2, от 2 до элемента3
....
Фактические результаты:
Из 37 идентификаторов: 5 для элемента1, 10 для элемента2, 2 для элемента3, 20 идентификаторов не могут перейти к элементу