Когда я вычисляю в Java SHA-256 строки следующим методом
public static void main(String[] args) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] hash = md.digest("password".getBytes());
StringBuffer sb = new StringBuffer();
for(byte b : hash) {
sb.append(Integer.toHexString(b & 0xff));
}
System.out.println(sb.toString());
}
, я получаю:
5e884898da2847151d0e56f8dc6292773603dd6aabbdd62a11ef721d1542d8
в командной строке я делаю следующее (мне нужно-n
, чтобы не добавлять новую строку):
echo -n "password" | sha256sum
и получить
5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
, если мы сравним их более близко, я найду 2 тонкие различия
5e884898da2847151d0e56f8dc6292773603dd6aabbdd62a11ef721d1542d8
5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
или:
5e884898da28 47151d0e56f8dc6292773603d d6aabbdd62a11ef721d1542d8
5e884898da28 0 47151d0e56f8dc6292773603d 0 d6aabbdd62a11ef721d1542d8
Какая из 2 верна здесь?
Результат: И то и другое, но я ошибался ...
исправленоэто с помощью:
StringBuffer sb = new StringBuffer();
for(byte b : hash) {
sb.append(String.format("%02x", b));
}
Спасибо!