Java 中的 MD5 哈希值

原文:https://www.geeksforgeeks.org/md5-hash-in-java/

要在 Java 中计算加密哈希值,请使用MessageDigest类,位于包java.security下。

MessageDigest类提供以下加密哈希函数来查找文本的哈希值,它们是:

  1. MD5

  2. SHA-1

  3. SHA-256

该算法在名为getInstance()的静态方法中初始化。 选择算法后,它将计算摘要值,并以字节数组返回结果。

使用BigInteger类,该类将结果字节数组转换为其符号幅度表示

该表示形式转换为十六进制格式以获取MessageDigest

例子:

Input : hello world
Output : 5eb63bbbe01eeed093cb22bb8f5acdc3

Input : GeeksForGeeks
Output : e39b9c178b2c9be4e99b141d956c6ff6
import java.math.BigInteger; 
import java.security.MessageDigest; 
import java.security.NoSuchAlgorithmException; 

// Java program to calculate MD5 hash value 
public class MD5 { 
    public static String getMd5(String input) 
    { 
        try { 

            // Static getInstance method is called with hashing MD5 
            MessageDigest md = MessageDigest.getInstance("MD5"); 

            // digest() method is called to calculate message digest 
            //  of an input digest() return array of byte 
            byte[] messageDigest = md.digest(input.getBytes()); 

            // Convert byte array into signum representation 
            BigInteger no = new BigInteger(1, messageDigest); 

            // Convert message digest into hex value 
            String hashtext = no.toString(16); 
            while (hashtext.length() < 32) { 
                hashtext = "0" + hashtext; 
            } 
            return hashtext; 
        }  

        // For specifying wrong message digest algorithms 
        catch (NoSuchAlgorithmException e) { 
            throw new RuntimeException(e); 
        } 
    } 

    // Driver code 
    public static void main(String args[]) throws NoSuchAlgorithmException 
    { 
        String s = "GeeksForGeeks"; 
        System.out.println("Your HashCode Generated by MD5 is: " + getMd5(s)); 
    } 
} 

输出

Your HashCode Generated by MD5 is: e39b9c178b2c9be4e99b141d956c6ff6

参考:MessageDigest的 Java 文档