java 实现md5加密

原创 2013年12月04日 10:09:30

 java通用的md5加密算法

 

import java.security.MessageDigest;

public class MD5Util {
    public final static String MD5(String s) {
        char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};       

        try {
            byte[] btInput = s.getBytes();
            // 获得MD5摘要算法的 MessageDigest 对象
            MessageDigest mdInst = MessageDigest.getInstance("MD5");
            // 使用指定的字节更新摘要
            mdInst.update(btInput);
            // 获得密文
            byte[] md = mdInst.digest();
            // 把密文转换成十六进制的字符串形式
            int j = md.length;
            char str[] = new char[j * 2];
            int k = 0;
            for (int i = 0; i < j; i++) {
                byte byte0 = md[i];
                str[k++] = hexDigits[byte0 >>> 4 & 0xf];
                str[k++] = hexDigits[byte0 & 0xf];
            }
            return new String(str);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public static void main(String[] args) {
        System.out.println(MD5Util.MD5("20121221"));
        System.out.println(MD5Util.MD5("加密"));
    }
}

 

下面的内容来至于http://hi.baidu.com/java2013/item/c5ec48d4e949e70cd90e44c7

 

 1、使用了sun.misc.BASE64Encoder类来对密码进行MD5加密

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

public class MD5DigestUtil {

    publicstatic String EncoderPwdByMd5(String password) 
		throwsNoSuchAlgorithmException, UnsupportedEncodingException {
        // 确定计算方法
        MessageDigestmd5 = MessageDigest.getInstance("MD5");
        //这里使用sun的未公开的sun.misc.BASE64Encoder类
        BASE64Encoder base64en = new BASE64Encoder();
       // 加密后的字符串
        // 说明:MD5加密后的字节数组,再使用base64对其进行编码
       String newstr = base64en.encode(md5.digest(password.getBytes("utf-8")));
       return newstr;
    }
}

import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
public class MD5Digest {
    publicstatic void main(String[] args) throws NoSuchAlgorithmException,UnsupportedEncodingException {    
    String password = "1234";
    System.out.println("加密前,password= " + password);
    String encodedPassword = MD5DigestUtil.EncoderPwdByMd5(password);
    System.out.println("加密后,password= " + encodedPassword);
    }    

}

 这个类是sun未对外公开的类,在java API文档中,我们找不到这个类的说明文档。在Oracle的官方网站对这个类有说明,指出sun.*包中的类是sun内部使用的类,并不对外公开,在未来的版本中,也许会有变化,比如移到正式发行的包中,或者甚至有可能废弃不用,这都将给现在使用这个类的程序带来不稳定性。因此Oracle官方的建议是不要使用这个类,建议使用第三方提供的,比如Apache的类。

 

2  使用Apache的Base64编码类
Apache提供的有对字节数组进行Base64编码的类org.apache.commons.codec.binaryBase64。这个类提供有许多静态方法用来进行编码和解码。
在使用这个类之前,首先要到Apache官方网站上下载commons-codec-1.6.jar包,并将这个包导入到类的构建路径中。
下面是改写过后的MD5DigestUtil.java类的代码:

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.apache.commons.codec.binary;

public class MD5DigestUtil {
	publicstatic String EncoderPwdByMd5(String password) 
		throwsNoSuchAlgorithmException, UnsupportedEncodingException {
        // 确定计算方法
		MessageDigest md5 = MessageDigest.getInstance("MD5");
        // 加密后的字符串
        // 说明:MD5加密后的字节数组,再使用base64对其进行编码
        String newstr = Base64.encodeBase64String(md5.digest(password.getBytes("utf-8")));
		return newstr;
    }
}

 

 

3  使用Apache的DigestUtils加密算法类
Apache提供的有MD5、SHA等加密算法的类org.apache.commons.codec.digest.DigestUtils。这个类提供有许多静态方法用来进行加密。
在使用这个类之前,首先要到Apache官方网站上下载commons-codec-1.6.jar包,并将这个包导入到类的构建路径中。
下面是改写过后的使用org.apache.commons.codec.digest.DigestUtils类的MD5DigestUtil.java类的代码:

package com.xuejava;
import org.apache.commons.codec.digest.DigestUtils;
public class MD5DigestUtil {
	publicstatic String EncoderPwdByApacheMd5(String password){
       return DigestUtils.md5Hex(password);
    }  
}

 

两种方式实现java Md5加密

一、加盐方式/** * 生成32位md5码 * @param password * @return */ public static String md...
  • zjx2016
  • zjx2016
  • 2017年07月13日 15:32
  • 8979

MD5加密原理和Java实现

MD5加密算法为现在应用最广泛的哈希算法之一,该算法广泛应用于互联网网站的用户文件加密,能够将用户密码加密为128位的长整数。数据库并不明文存储用户密码,而是在用户登录时将输入密码字符串进行MD5加密...
  • qq_19776363
  • qq_19776363
  • 2015年10月14日 19:50
  • 1228

MD5加密的简单java实现

MD5加密
  • liu1782291245
  • liu1782291245
  • 2017年06月19日 14:24
  • 15661

java中使用MD5算法给密码加密的方式

package test.base64; import java.math.BigInteger; import java.security.MessageDigest; import java.s...
  • z83986976
  • z83986976
  • 2015年01月11日 09:57
  • 1384

Java实现MD5加密和文件校验

MD5的加密方式是一种哈希加密。一些主流的编程语言都已经实现了MD5的加密,所以如果你的程序或是系统涉及到在多种语言之间的校验,那么MD5可以是备选之一。不过因为MD5是采用哈希函数来进行的加密,所以...
  • u013761665
  • u013761665
  • 2015年07月01日 22:51
  • 3234

Java实现MD5加盐加密算法

《 Java实现MD5加盐加密算法 》 现在一般的MD5加密在网上随随便便就能解密,解密的网站有以下一个:...
  • Hello_World_QWP
  • Hello_World_QWP
  • 2017年12月27日 15:48
  • 155

Java与C++实现相同的MD5加密算法

1、Java版 package com.lyz.utils.common; import java.io.UnsupportedEncodingException; import java.secu...
  • l1028386804
  • l1028386804
  • 2015年07月23日 17:38
  • 2105

Java使用MD5加密例子

package com.itheima.utils; import java.math.BigInteger; import java.security.MessageDigest; import ...
  • qq_22260641
  • qq_22260641
  • 2017年06月07日 17:44
  • 1011

Java中md5加密工具类

以下是整理的两个md5加密工具类(两类之间无联系):一:public class MD5Utils { public static String getMD5(String source) {...
  • qq_34273222
  • qq_34273222
  • 2017年03月17日 18:25
  • 458

(转)java 中如何进行md5加密--韩顺平

今天朱基亮问如何在java中进行md5加密,我查了一下资料,整理了一下,写了一个类,大家可以直接使用.如果想了解一下md5的源码,可以参看网上的资料,java中提供了专门的md5工具类,使用是非常简单...
  • lishirong
  • lishirong
  • 2014年12月02日 09:46
  • 1148
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java 实现md5加密
举报原因:
原因补充:

(最多只允许输入30个字)