md5java的简单介绍

发布时间:2023-01-09

本文目录一览:

  1. Java MD5如何解密?
  2. java 中如何进行md5加密
  3. 如何使用Java生成MD5代码
  4. java用md5密码加密有必要吗?

Java MD5如何解密?

MD5是单向加密的,不管何种数据进行MD5加密都会得到固定长度的字符串。 MD5一般用户文件完整性的校验,也有用来做密码加密的。 想要破解MD5,因其本身的算法不可逆,故只能使用穷举法,也就是不断拼字符串加密和已知的MD5字符串进行比对,这是一个相当大的工程,需要庞大的数据基础。

java 中如何进行md5加密

JDK里面有一个java.security.MessageDigest类,这个类就是用来加密的。 加密代码如下:

String token = System.currentTimeMillis() + new Random().nextInt() + "";
try {
    MessageDigest md = MessageDigest.getInstance("MD5");
    byte[] md5 = md.digest(token.getBytes());
} catch (Exception e) {
    throw new RuntimeException(e);
}

这个byte类型的数组就是使用MD5加密后的结果。

如何使用Java生成MD5代码

这是我以前做的一个小项目时用到md5写的:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
//将用户密码进行md5加密   并返回加密后的32位十六进制密码
public class MD5Util {
    public static String md5(String password) {
        try {
            // 获取md5对象
            MessageDigest md = MessageDigest.getInstance("md5");
            // 获取加密后的密码并返回十进制字节数组
            byte[] bytes = md.digest(password.getBytes());
            // 遍历数组得到每个十进制数并转换成十六进制
            StringBuffer sb = new StringBuffer();
            for (byte b : bytes) {
                // 把每个数转成十六进制 存进字符中
                sb.append(toHex(b));
            }
            String finish = sb.toString();
            return finish;
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    // 十进制转十六进制方法
    private static String toHex(byte b) {
        int target = 0;
        if (b < 0) {
            target = 255 + b + 1;
        } else {
            target = b;
        }
        int first = target / 16;
        int second = target % 16;
        return Hex[first] + Hex[second];
    }
    static String[] Hex = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
            "a", "b", "c", "d", "e", "f" };
    /*public static void main(String[] args) {
        String a = MD5Util.md5("1234");
        System.out.println(a);
    }*/
}

java用md5密码加密有必要吗?

有必要的,MD5就是为了防止人偷窥,而当密码很短的时候,利用暴力搜索也比较容易搜索到,只有密码强度足够的情况下才有意义,你想转换也就没那么容易了。MD5类hash算法的设计初衷就是单向,即不可逆。