Это, что я использую для хешей MD5:
public static String getMD5(String filename)
throws NoSuchAlgorithmException, IOException {
MessageDigest messageDigest =
java.security.MessageDigest.getInstance("MD5");
InputStream in = new FileInputStream(filename);
byte [] buffer = new byte[8192];
int len = in.read(buffer, 0, buffer.length);
while (len > 0) {
messageDigest.update(buffer, 0, len);
len = in.read(buffer, 0, buffer.length);
}
in.close();
return new BigInteger(1, messageDigest.digest()).toString(16);
}
РЕДАКТИРОВАНИЕ: я протестировал, и я заметил, что с этим также конечные нули сокращаются. Но это может только произойти в начале, таким образом, можно соответствовать ожидаемой длине и клавиатуре соответственно.
В некоторых случаях это лучший способ, потому что ваш код может что-то изменить, и j = i + 1 не будет проверять это.
for (int i = 0; i < list.size(); i++{
for (int j = 0; j < list.size(); j++) {
if(i == j) {
continue;
}
}