Я конвертирую некоторые C# в Java. C# является:Хэш массива байтов в Java
// Return a SHA256 hash of a string, formatted in hex
private static string HashPassword(string password)
{
SHA256Managed hash = new SHA256Managed();
byte[] utf8 = UTF8Encoding.UTF8.GetBytes(password);
return BytesToHex(hash.ComputeHash(utf8));
}
В Java я заменил SHA256Managed
с MessageDigest
:
private static String HashPassword(String password)
{
MessageDigest hash = MessageDigest.getInstance("SHA-256");
byte[] utf8 = hash.digest(password.getBytes(StandardCharsets.UTF_8));
return BytesToHex(hash.ComputeHash(utf8)); // ComputeHash?
}
но MessageDigest
не ComputeHash()
и я не вижу его эквивалент. MessageDigest
правильный класс для использования здесь? Если да, то что мне делать для ComputeHash()
. Если не какой класс я использую?
Отметьте, что BytesToHex
Преобразует массив байтов в шестнадцатеричную строку.
Вы читали Javadoc для 'MessageDigest'? Метод финализации хэша - 'digest()' для хэша, вычисленного в нескольких сегментах, или 'digest (byte [])' для односегментного вычисления (или в качестве конечного сегмента многосегментного хэша). –
Я читал, но не внимательно. Виноват. –