Md5 hash to string java

Java MD5 Hash using Apache Commons Codec

In this Java tutorial we learn how to calculate MD5 digest in Java application using the DigestUtils class of Apache Commons Codec library.

Table of contents

Add Apache Commons Codec Dependency to Java project

To use Apache Commons Codec library in the Gradle build project, add the following dependency into the build.gradle file.

implementation group: 'commons-codec', name: 'commons-codec', version: '1.15'

To use the Apache Commons Codec library in the Maven build project, add the following dependency into the pom.xml file.

  commons-codec commons-codec 1.15 

To have more information about the Apache Commons Codec Java library you can visit the project home page at commons.apache.org/proper/commons-codec/

Convert String to MD5 Hash in Java

The Apache Commons Codec library provides method DigestUtils.md5Hex() can be used to calculate the MD5 digest and return value as a 32 characters hex string.

String md5Value = DigestUtils.md5Hex(inputData);

In the following Java program, we show how to use DigestUtils.md5Hex() method to hash an input String to MD5 hash as a hex string.

import org.apache.commons.codec.digest.DigestUtils; public class Md5Example1  public static void main(String. args)  String inputData = "Simple Solution"; String md5Value = DigestUtils.md5Hex(inputData); System.out.println("Input String:" + inputData); System.out.println("MD5:" + md5Value); > >
Input String:Simple Solution MD5:6cd04c53878b462e5d7d400a11ac19cf

Generate File MD5 Checksum String in Java

Apache Commons Codec library provides the DigestUtils.md5Hex() method to generate MD5 hash for an InputStream as below.

String md5Value = DigestUtils.md5Hex(inputStream);

For example, we have a document file at D:\SimpleSolution\Document.doc

The following Java program to show you how to use the DigestUtils.md5Hex() to generate MD5 checksum hash for a given file and return MD5 hash value as a hex string.

import org.apache.commons.codec.digest.DigestUtils; import java.io.FileInputStream; import java.io.IOException; public class Md5Example2  public static void main(String. args) throws IOException  String filePath = "D:\\SimpleSolution\\Document.docx"; String md5Value = DigestUtils.md5Hex(new FileInputStream(filePath)); System.out.println("MD5:" + md5Value); > >
MD5:b3143672f91aea6ceceae116a852d4d6

Generate MD5 Hash as Bytes Array

The Apache Commons Codec library also provides DigestUtils.md5() method to calculate MD5 digest and return value as a 16 element byte[] array.

byte[] md5Value = DigestUtils.md5(inputData);

The following Java example program to show you how to use the DigestUtils.md5() method to hash a String to a MD5 hash value as byte[] array.

import org.apache.commons.codec.digest.DigestUtils; import java.util.Arrays; public class Md5Example3  public static void main(String. args)  String inputData = "Simple Solution"; byte[] md5Value = DigestUtils.md5(inputData); System.out.println("Input String:" + inputData); System.out.println("MD5 as bytes:" + Arrays.toString(md5Value)); > >
Input String:Simple Solution MD5 as bytes:[108, -48, 76, 83, -121, -117, 70, 46, 93, 125, 64, 10, 17, -84, 25, -49]

Get Instance of java.security.MessageDigest for MD5 message digest algorithm

Using Apache Commons Codec we can use the DigestUtils.getMd5Digest() method to return instance of MD5 java.security.MessageDigest and use it to calculate MD5 digest as following Java program.

import org.apache.commons.codec.binary.Hex; import org.apache.commons.codec.digest.DigestUtils; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; public class Md5Example4  public static void main(String. args)  String inputData = "Simple Solution"; MessageDigest md5MessageDigest = DigestUtils.getMd5Digest(); byte[] hashedBytes = md5MessageDigest.digest(inputData.getBytes(StandardCharsets.UTF_8)); String md5Value = Hex.encodeHexString(hashedBytes); System.out.println("Input String:" + inputData); System.out.println("MD5:" + md5Value); > >
Input String:Simple Solution MD5:6cd04c53878b462e5d7d400a11ac19cf

Источник

Java MD5 example

MD5 (Message-Digest algorithm 5) is a widely used cryptographic hash function with a 128-bit hash value, specified in RFC 1321, MD5 is one in a series of message digest algorithms designed by Professor Ronald Rivest of MIT (Rivest, 1994). MD5 has been employed in a wide variety of security applications, and is also worldwide used to check the integrity of files.

MD5 is a perfect solution for security thinking. The Java developers usually may take over or code MD5 encryption, the MD5 encryption is complicated, for self-coding it’s hard to implement. Java standard edition has MD5 support built in. in package java.security , class MessageDigest supports functionality of a message digest algorithm, such as MD5 or SHA.

1. Example to Hash a String with MD5 algorithm

This is a Java MD5 example, it passes into a string and returns the MD5 encryption value, we used the method getBytes() that converts a plain text to byte array, the digest is then updated from the bytes from the byte array and a hash computation is conducted upon them(using MessageDigest ).

import java.io.FileInputStream; import java.io.UnsupportedEncodingException; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5 < public static String getMD5(String input) < try < MessageDigest md = MessageDigest.getInstance("MD5"); byte[] messageDigest = md.digest(input.getBytes()); BigInteger number = new BigInteger(1, messageDigest); String hashtext = number.toString(16); // Now we need to zero pad it if you actually want the full 32 chars. while (hashtext.length() < 32) < hashtext = "0" + hashtext; >return hashtext; > catch (NoSuchAlgorithmException e) < throw new RuntimeException(e); >> public static void main(String[] args) throws NoSuchAlgorithmException < System.out.println(getMD5("Javarmi.com")); >>

Java MD5 example Output:

2. Another way Hashing String with MD5 algorithm

This is another Java MD5 encryption example, it accepts string and returns MD5 encryption value.

import java.io.FileInputStream; import java.io.UnsupportedEncodingException; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5 < public static String getMD5(String input) < byte[] source; try < //Get byte according by specified coding. source = input.getBytes("UTF-8"); >catch (UnsupportedEncodingException e) < source = input.getBytes(); >String result = null; char hexDigits[] = ; try < MessageDigest md = MessageDigest.getInstance("MD5"); md.update(source); //The result should be one 128 integer byte temp[] = md.digest(); char str[] = new char[16 * 2]; int k = 0; for (int i = 0; i < 16; i++) < byte byte0 = temp[i]; str[k++] = hexDigits[byte0 >>> 4 & 0xf]; str[k++] = hexDigits[byte0 & 0xf]; > result = new String(str); > catch (Exception e) < e.printStackTrace(); >return result; > public static void main(String[] args) throws NoSuchAlgorithmException < System.out.println(getMD5("Javarmi.com")); >>

Java MD5 example Output

3. File checksum using Java MD5

MD5 algorithm is also widely used for file checksum to ensure that files were not modified by attacker, an example is below that uses Java MD5 hashing algorithm to generate a checksum for file “c:\\apache\\cxf.jar”. you can check whether the printed value matches the original MD5 value which was released by Jar Publisher.

public static void main(String[] args) throws Exception < MessageDigest md = MessageDigest.getInstance("MD5"); FileInputStream fis = new FileInputStream("c:\\apache\\cxf.jar"); byte[] dataBytes = new byte[1024]; int nread = 0; while ((nread = fis.read(dataBytes)) != -1) < md.update(dataBytes, 0, nread); >; byte[] mdbytes = md.digest(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < mdbytes.length; i++) < sb.append(Integer.toString((mdbytes[i] & 0xff) + 0x100, 16).substring(1)); >System.out.println("Digest(in hex format):: " + sb.toString()); >

Источник

MD5 пример использования в Java

Вам нужно зашифровать пароль либо другие данные, в таком случае можно использовать MD5 шифрование.

MD5 ( Message Digest 5 ) — 128-битный алгоритм хеширования , разработанный профессором Рональдом Л. Ривестом в 1991 году . Предназначен для создания «отпечатков» или дайджестов сообщения произвольной длины и последующей проверки их подлинности.

Для приведения примеров я создал класс MD5Util.java в котором реализую два метода генерации MD5.

Метод #1: Собственная реализация

Ниже приведен пример реализации:

public static String md5Custom(String st) < MessageDigest messageDigest = null; byte[] digest = new byte[0]; try < messageDigest = MessageDigest.getInstance("MD5"); messageDigest.reset(); messageDigest.update(st.getBytes()); digest = messageDigest.digest(); >catch (NoSuchAlgorithmException e) < // тут можно обработать ошибку // возникает она если в передаваемый алгоритм в getInstance(. ) не существует e.printStackTrace(); >BigInteger bigInt = new BigInteger(1, digest); String md5Hex = bigInt.toString(16); while( md5Hex.length() < 32 )< md5Hex = "0" + md5Hex; >return md5Hex; >

Хеш содержит 128 бит (16 байт) поэтому мы в строке 17 указали 16 байтов, в строке 19 было указанно 32 так как обычно хеш 16 байтов представляется как последовательность из 32 шестнадцатеричных цифр.

Метод #2: Apache Common Codec

Этот метод заключается в использовании готовой реализации MD5.

Для того чтобы использовать реализацию Apache Common Codec нужно подключить его к проекту. Если использовать Maven то нужно подключить к вашему проекту зависимость:

 commons-codec commons-codec 1.9 

И ниже пример использования:

public static String md5Apache(String st)

DigestUtils – это утильный класс позволяющий зашифровать данные в MD5 и другие типы шифрования.

Использование

Вызов методов утильного класса MD5Util.java со строкой devcolibri:

public static void main(String[] args)

Custom MD5: 4fa25efdd84d2e2c9f206980d4ccfff1 Apache MD5: 4fa25efdd84d2e2c9f206980d4ccfff1

ПОХОЖИЕ ПУБЛИКАЦИИ

21 комментариев к статье «MD5 пример использования в Java»

а почему не указал в обратную сторону , т.е. как расшифровать md5 например , если хранить пароли пользователей в базе

Потому что расшифровать md5 возможно, но это очень и очень трудоемкий процесс. Но если хранить пароль в БД и вы хотите сравнить их, то расшифровывать пароль не надо нужно просто второй не зашифрованный зашифровать и сравнить их.

На данный момент расшифровать MD5 уже совершенно не трудоемкий процесс, будет ли туториал по современным методам хеширования?

Хеш-сумму, полученную с помощью любого метода хеширования (не важно, MD5 это, или какой-нибудь SHA1) расшифровать невозможно, и не будет никогда возможно. Начнём с того, что MD5 это не шифрование вообще, а всего лишь хеш-сумма. Хеш можно взять с любого объёма данных. Представьте, у нас есть файл размером 50Гб, мы берём с него хеш-сумму и получаем 32-байтовую строку (в обычном MD5). Получается, что мы сжали данные объёмом в 53687091200 байт всего до 32. Вы сами-то в этом верите?

Дело не в трудоемкости, а в безопасности. Не стоит хранить в бд пароли юзеров, т.к их могут украсть. Храни хеши, и сравнивай хеши….

Александр, есть правильные вопросы, а есть неправильные. Alex задал неправильный вопрос, который говорит, что он не совсем понимает тему, про которую задает вопрос. И вместо того, что бы отвечать на его некомпетентный вопрос, наверно лучше сказать, что он изначально неправильно видит ситуацию.
1) Например то, что md5 служит для именно для одностороннего преобразования, а значит декодирование в принципе не для этого алгоритма….
2) Ну и второе, человек рассуждает о хранении паролей в БД….вместо того, что бы намекнуть о изначально неправильном подходе, Вы подогреваете его неверные рассуждения.
При этом, я всего-лишь хотел поправить его вектор мыслей…. 🙂 Да, вероятно такие вопросы идут из-за не очень продуманного введения к статье. Практики много, теории ноль, что в итоге ведет к непониманию и оторванности решения от постановки задачи.

В статье же не сря метка NOTE стоит 🙂 Это тип заметки, который не подразумевает детальное описание всего. Но вас я понял, учту)

Источник

Читайте также:  Символьный тип char java
Оцените статью