📌  相关文章
📜  Java中的 MessageDigest toString() 方法及示例(1)

📅  最后修改于: 2023-12-03 14:42:50             🧑  作者: Mango

Java中的MessageDigest toString()方法及示例

在Java编程中,MessageDigest类是用于实现加密散列算法(如MD5或SHA)的工具类。其中,toString()方法是将指定的字节数组转换为字符串表示形式的方法。

语法
public String toString()

该方法没有参数,返回值为一个代表指定字节数组内容的字符串。

示例

下面是一个使用MessageDigest类和toString()方法的示例程序,该程序使用MD5算法计算字符串的哈希值:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class HashDemo {

    public static void main(String[] args) {
        String input = "Hello, world!";
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(input.getBytes());
            byte[] digest = md.digest();
            //将字节数组转换为字符串
            String hashValue = byte2hex(digest);
            System.out.println("Hash value of the input: " + hashValue);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }

    private static String byte2hex(byte[] bytes) {
        StringBuilder builder = new StringBuilder();
        for (byte b : bytes) {
            builder.append(String.format("%02x", b));
        }
        return builder.toString();
    }
}

在上述代码中,我们实例化了一个MessageDigest对象,并将要计算哈希值的字符串转换为字节数组,然后使用update()方法将其输入到哈希计算中。最后,通过调用digest()方法获取哈希值的字节数组,并将其作为参数传递给byte2hex()方法进行转换为字符串形式。

输出结果如下:

Hash value of the input: b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

因此,我们可以发现,toString()方法实际上是在将字节数组转换为十六进制字符串形式的过程中使用的。