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);
    }  
}

 

MD5、AES、DES加密的java实现

  • 2016年07月12日 10:38
  • 84KB
  • 下载

RAS、Md5、 AES java加密实现

  • 2015年09月06日 10:06
  • 5KB
  • 下载

C语言MD5加密算法的简单调用实现(另附:Java/Python/Shell/Golang方法)

1.首先加上一些库:apt-get install openssl  libssl-dev libssl-doc libcurl4-openssl-dev  2.实现一个用MD5加密密码的小程序:...

基于JAVA的MD5加密解密实现

  • 2010年04月26日 12:11
  • 4KB
  • 下载

用Java实现MD5加密的源文件

  • 2008年10月28日 03:23
  • 10KB
  • 下载

java加密用户登录密码--不用MD5实现

看到一个用java实现的简单的加密,主要是可以进行相应的解密,方便实现,在实现一些小的项目的时候可以进行应用.主要的思路,首先给定一个字符串,随机取两个字符作为加密元,和输入的密码组成一个新的字符串,...

sha md5 java和javascript加密的实现

  • 2009年09月30日 23:08
  • 7KB
  • 下载

java实现MD5加密算法

  • 2016年07月25日 11:09
  • 819B
  • 下载

java 实现各种加密(MD5 ,SHA-1,SHA-256)

常用加密算法通用方法:package BinTest.bin;import java.security.MessageDigest; import java.security.NoSuchAlgori...

java实现md5 加密解密

  • 2013年08月20日 09:58
  • 4KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java 实现md5加密
举报原因:
原因补充:

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