Java计算MD5、SHA-1、SHA-256、SHA-512哈希

要在Java中计算加密哈希值,将使用MessageDigest Class(位于包java.security下)。

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

2. SHA-1

3. SHA-256

4. SHA-512

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

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

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

 

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 = "MD5";

        System.out.println("Your String is: " + s);

        System.out.println("Your HashCode Generated by MD5 is: " + getMd5(s));

    }

}

 

输出:

Your String is: MD5

Your HashCode Generated by MD5 is: 7f138a09169b250e9dcb378140907378

 

将getInstance("MD5")更改为getInstance("SHA-1")、getInstance("SHA-256")、getInstance("SHA-512")可计算相应的哈希值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值