Как я могу хэшировать некоторую строку sha256
в Java? Кто-нибудь знает какую-нибудь бесплатную библиотеку для этого?
210
Как я могу хэшировать некоторую строку sha256
в Java? Кто-нибудь знает какую-нибудь бесплатную библиотеку для этого?
Ответы:
SHA-256 не является «кодировкой» - это односторонний хэш.
Вы в основном конвертируете строку в байты (например, используя
text.getBytes(StandardCharsets.UTF_8)
), а затем хешируете байты. Обратите внимание, что результатом хеширования также могут быть произвольные двоичные данные, и если вы хотите представить их в строке, вы должны использовать base64 или hex ... не пытайтесь использоватьString(byte[], String)
конструктор.например
источник
"UTF-8"
литерала в Java 7+: на одно проверенное исключение нужно меньше беспокоиться.Я думаю, что самое простое решение - использовать Apache Common Codec :
источник
Другой альтернативой является Guava, который имеет простой в использовании набор утилит хеширования . Например, чтобы хэшировать строку, используя SHA256 в качестве шестнадцатеричной строки, вы просто должны сделать:
источник
Полный пример хеш-строки в качестве другой строки.
источник
Если вы используете Java 8, вы можете кодировать
byte[]
, выполнивисточник
источник
0xff
? Это ничего не дает, не так ли?источник
Я проследил код Apache до конца
DigestUtils
и,sha256
похоже, вернулся кjava.security.MessageDigest
расчету по умолчанию . Apache не реализует независимоеsha256
решение. Я искал независимую реализацию для сравнения сjava.security
библиотекой. К вашему сведению.источник
Это был мой подход с использованием Kotlin:
источник
[B@188363e
не зашифрованный пароль. Кроме того, каждый раз, когда вызывается эта функция, она кажется другой.return hash.fold("", { str, it -> str + "%02x".format(it)})
который возвращает зашифрованный пароль, а не сам объект.Вот немного более эффективный способ превратить дайджест в шестнадцатеричную строку:
Кто-нибудь знает более быстрый путь в Java?
источник
Вы можете использовать MessageDigest следующим образом:
источник
В Java 8
источник
В Java класс MessageDigest используется для вычисления значения криптографического хеширования. Этот класс предоставляет криптографическую хеш-функцию ( MD5 , SHA-1 и SHA-256 ), чтобы найти хеш-значение текста.
Пример кода для использования алгоритма SHA-256.
источник
Вот что я использовал для хеширования:
Выход: 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
источник
Вы можете вызвать выше метод с различными алгоритмами, как показано ниже.
Вы можете обратиться по этой ссылке для полного применения.
источник