Я не искал определения для используемых классов, но байтовые операции, кажется, кодируют возвращенный байтовый массив в строку шестнадцатеричных символов.
for(final byte b : md.digest()) {
// get high 4 bytes of current byte
final int h = b >> 4 & 0x0F;
// convert into hex digit (0x30 is '0' while 0x57+10 is 'a')
tb.add((byte) (h + (h > 9 ? 0x57 : 0x30)));
// the same for the bottom 4 bits
final int l = b & 0x0F;
tb.add((byte) (l + (l > 9 ? 0x57 : 0x30)));
}
Это отличный пример того, почему использование магических чисел плохо. Я, например, честно говоря, не мог вспомнить, что 0x57 + 10 - это кодовая точка ASCII / Unicode для 'a' без проверки в интерпретаторе Python.