Я изучаю MD5, а также SHA с MessageDigest. Вот код, который у меня есть из класса, который реализует MD5 с MessageDigest. У меня проблемы с пониманием.
Таким образом, он получает «экземпляр» MD5. Я предполагаю, что это алгоритм MD5? Затем он обновляет байты. Почему это происходит? Затем он создает переменную bytes b с помощью md.digest(), но я тоже не уверен, почему он это делает? Затем я думаю, что он использует оператор for для выполнения алгоритма и, возможно, дополняет его (добавляет 0?). Если бы кто-нибудь мог объяснить немного лучше, я был бы признателен!
try {
MessageDigest md = MessageDigest.getInstance("MD5"); // get the
// instance
// of md5
md.update(bytes); // get the digest updated
byte[] b = md.digest(); // calculate the final value
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
message = buf.toString(); // output as strings
} catch (NoSuchAlgorithmException e) {
e.printStackTrace(); // when certain algorithm is down, output the
// abnormal condition
}
return message;
}