MD5加密

1、为什么

在一个Web系统中,如果注册用户的密码直接以明文的方式存储,则数据库管理员可以直接查看所有用户的密码;如果数据库被黑客侵入,则会造成用户信息的泄漏。为了避免这样的情况发生,通常采用加密技术对用户的密码进行加密之后在存储到数据库中,

2、MD5加密算法简介

MD5(Message Digest)是一种加密算法,能够对字节数组进行加密,有如下特点。

  1. 不能根据加密后的信息(密文)得到加密前的信息(明文)
  2. 对于不同的明文,加密后的密文是不相同的。

注:在这里不介绍该算法的具体实现原理,如果感兴趣的可以查阅相关资料

3、MD5算法的实现

在java类库中,java.security.MessageDigest 和 sun.misc.BASE64Encoder类提供了对MD5算法实现的支持,因此不用了解MD5算法的细节也能实现它。基本过程如下;

  1. 把要加密的字符串转换成字节数组。
  2. 获取MessageDigest对象,利用该对象的digest方法完成加密,返回字节数组。
  3. 将字节数组利用base64算法转换成等长的字符串。

4、代码实现

import sun.misc.BASE64Encoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class md5 {
    public static void main(String [] args){
        String abc = md5.MD5("abc");
        System.out.println(abc);
        System.out.println(md5.MD5("fugaoyang"));
        //输出结果
        //kAFQmDzST7DWlj99KOF/cg==
		//Nz6xhJ3J7fqFDXcmjJBFKQ==
    }
    public static String MD5(String oldStr){
        byte[] oldStrBytes = oldStr.getBytes();
        MessageDigest md5;
        try {
             md5 = MessageDigest.getInstance("MD5");
            byte[] digest = md5.digest(oldStrBytes);
            BASE64Encoder base64Encoder = new BASE64Encoder();
            String newStr = base64Encoder.encode(digest);
            return newStr;
        }catch (NoSuchAlgorithmException e){
            return null;
        }

    }
}


参考:JavaWeb应用开发技术与案例教程

你可能感兴趣的:(项目,java,数据库)