MD5加密

1.MD5加密,只加不解
public class TestMd5 {

    public static void main(String[] args) {
        String password="abcd";
        try {
            MessageDigest md=MessageDigest.getInstance("MD5");
            md.update(password.getBytes(),0,password.length());
            BigInteger bi=new BigInteger(1,md.digest());
            System.out.println(bi.toString(16));
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        
    }
}

2.简单工具封装
public class SecurityUtil {

    public static String md5(String password) throws NoSuchAlgorithmException{
        MessageDigest md=MessageDigest.getInstance("MD5");
        md.update(password.getBytes());
        return new BigInteger(1,md.digest()).toString(16);
    }
}

如果要对一个因为所有密码为123456的字符串加密后都一样,虽然比较安全,当数据库被人拖库之后,对方可以自己注册一个账号,然后将其他账号的密码字符串修改之后,系统所有的密码就与拖库人的密码一样了,所以加密需要添加一个盐值增加密文的复杂度:可以用独一无二的信息进行多次加密,如用户名等

public class SecurityUtil {

    public static String md5(String password) throws NoSuchAlgorithmException{
        MessageDigest md=MessageDigest.getInstance("MD5");
        md.update(password.getBytes());
        return new BigInteger(1,md.digest()).toString(16);
    }
    
    public static String md5(String username,String password) throws NoSuchAlgorithmException{
        MessageDigest md=MessageDigest.getInstance("MD5");
        //md.update((username+password).getBytes());
        md.update(username.getBytes());
        md.update(password.getBytes());
        return new BigInteger(1,md.digest()).toString(16);
    }
}


你可能感兴趣的:(MD5加密)