使用java自带的加密算法来实现md5的加密

使用java自带的加密算法来实现md5的加密

  • 概念
  • idea创建加密工具类EncryptUtil
  • 测试

概念

  • MD5(message-digest algorithm 5)信息摘要算法,它的长度一般是32位的16进制数字符串(如81dc9bdb52d04dc20036dbd8313ed055)
  • 由于系统密码明文存储容易被黑客盗取
  • 应用:注册时,将密码进行md5加密,存到数据库中,防止可以看到数据库数据的人恶意篡改。
  • md5不可逆,即没有对应的算法,从产生的md5值逆向得到原始数据。但是可以使用暴力破解,这里的破解并非把摘要还原成原始数据,如暴力枚举法。

idea创建加密工具类EncryptUtil

public class EncryptUtil {
    //取字符串的特征值,明文转密文
    public static String md5(String plainText){
        String encryStr = null;
        if(plainText != null || !"".equals(plainText)){
            try {
                //实例化MessageDigest,将md5的内容通过调用digest获取md5的byte值
                byte[] ret = MessageDigest.getInstance("md5").digest(plainText.getBytes());
                //将获取的byte数组值转为16进制的字符串
                String md5Code = new BigInteger(1,ret).toString(16);
                //获取的字符串不足32位的用“0”补齐
                for(int i = 0;i<32-md5Code.length();i++){
                    md5Code = "0" + md5Code;
                }
                encryStr = md5Code;
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
        }

        return encryStr;
    }
}

测试

  • 测试代码
public class TestEncrypt {
    @Test
    public void testMd5(){
        System.out.println(EncryptUtil.md5("1234"));
    }
}
  • 测试结果
    使用java自带的加密算法来实现md5的加密_第1张图片

你可能感兴趣的:(使用java自带的加密算法来实现md5的加密)