Вопрос-ответ

How can I generate an MD5 hash in Java?

Как я могу сгенерировать MD5-хэш в Java?

Существует ли какой-либо метод для генерации MD5-хэша строки в Java?

Переведено автоматически
Ответ 1

Класс MessageDigest может предоставить вам экземпляр дайджеста MD5.

При работе со строками и крипто-классами обязательно всегда указывайте кодировку, в которой вы хотите представить байтовое представление. Если вы просто используете string.getBytes(), будет использоваться платформа по умолчанию. (Не все платформы используют одинаковые значения по умолчанию)

import java.security.*;

..

byte[] bytesOfMessage = yourString.getBytes("UTF-8");

MessageDigest md = MessageDigest.getInstance("MD5");
byte[] theMD5digest = md.digest(bytesOfMessage);

Если у вас много данных, взгляните на .update(xxx) методы, которые можно вызывать повторно. Затем вызовите .digest(), чтобы получить результирующий хэш.

Ответ 2

Вам нужно java.security.MessageDigest.

ВызовитеMessageDigest.getInstance("MD5"), чтобы получить экземпляр MD5 MessageDigest, который вы можете использовать.

Вычислить хэш, выполнив одно из:


  • Передайте весь ввод в виде byte[] и вычислите хэш за одну операцию с помощью md.digest(bytes).

  • Загружайте MessageDigest по одному byte[] фрагменту за раз, вызывая md.update(bytes). Когда вы закончите добавлять входные байты, вычислите хэш с помощью md.digest().

byte[] Возвращаемый md.digest() является хэшем MD5.

Ответ 3

Если вы действительно хотите получить ответ в виде строки, а не массива байтов, вы всегда можете сделать что-то вроде этого:

String plaintext = "your text here";
MessageDigest m = MessageDigest.getInstance("MD5");
m.reset();
m.update(plaintext.getBytes());
byte[] digest = m.digest();
BigInteger bigInt = new BigInteger(1,digest);
String hashtext = bigInt.toString(16);
// Now we need to zero pad it if you actually want the full 32 chars.
while(hashtext.length() < 32 ){
hashtext = "0"+hashtext;
}
Ответ 4

Возможно, вы также захотите взглянуть на класс DigestUtils проекта apache commons codec, который предоставляет очень удобные методы для создания дайджестов MD5 или SHA.

java