import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5 { public static void main(String[] args) throws NoSuchAlgorithmException { String str = "Hello, world!"; MessageDigest md5 = MessageDigest.getInstance("MD5"); md5.update(str.getBytes()); byte[] digest = md5.digest(); StringBuilder sb = new StringBuilder(); for (byte b : digest) { sb.append(String.format("%02x", b & 0xff)); } System.out.println(sb.toString()); } }每段代码含义
时间: 2024-04-23 07:24:04 浏览: 180
1. `import java.security.MessageDigest;`:引入 `MessageDigest` 类,用于计算哈希值。
2. `import java.security.NoSuchAlgorithmException;`:引入 `NoSuchAlgorithmException` 类,用于处理算法不存在的情况。
3. `public class MD5 { ... }`:定义了一个名为 `MD5` 的公共类。
4. `public static void main(String[] args) throws NoSuchAlgorithmException { ... }`:定义了一个公共静态方法 `main()`,该方法接受一个字符串数组参数 `args`,并且可能抛出 `NoSuchAlgorithmException` 异常。
5. `String str = "Hello, world!";`:创建一个字符串变量 `str` 并赋值为 `"Hello, world!"`。
6. `MessageDigest md5 = MessageDigest.getInstance("MD5");`:通过 `getInstance()` 方法获取一个 `MD5` 算法的实例。
7. `md5.update(str.getBytes());`:将字符串 `str` 的字节数组传递给 `update()` 方法,用于更新 `MessageDigest` 对象的哈希值。
8. `byte[] digest = md5.digest();`:计算出哈希值,并将结果存储在 `digest` 变量中,该变量是一个字节数组。
9. `StringBuilder sb = new StringBuilder();`:创建一个字符串构建器对象 `sb`,用于构建十六进制字符串。
10. `for (byte b : digest) { ... }`:遍历字节数组 `digest`,将每个字节转换为两位十六进制数,并追加到 `StringBuilder` 中。
11. `sb.append(String.format("%02x", b & 0xff));`:将每个字节转换为两位十六进制数,并追加到 `StringBuilder` 中。
12. `System.out.println(sb.toString());`:将构建好的十六进制字符串输出到控制台。
阅读全文