С помощью Java я преобразовываю значение String в хэш, используя SHA1 в экземпляре MessageDigest. Я в точке, где я создал хеш-объект:Что означает (b & 0xff)?
MessageDigest md = MessageDigest.getInstance("SHA1");
byte[] hash = md.digest(password.getBytes("UTF-8"));
Часть я не понимаю, что б & 0xff означает, в следующем коде:
StringBuilder sb = new StringBuilder(2*hash.length);
for(byte b : hash) {
sb.append(String.format("%02x", b & 0xff));
}
Я знаю, что% 02X средства чтобы указать формат, в котором есть два символа с шестнадцатеричным значением, но я не знаю, что такое второй параметр, что он делает с каждым байтом или что он означает. Простое объяснение было бы здорово! :-)
Случайное примечание: если вы можете использовать сторонние библиотеки, все это одна строка 'Hashing.sha1(). HashString (пароль, Charsets.UTF_8) .toString()' с [Guava] (https: //code.google.com/p/guava-libraries/). –