java实现生成MD5码

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;


/**
 * @author anyone
 * @version 1.0.0.0/2011-8-8
 */
public class MD5 {


	private static final byte RESULT_32 = 32;
	private static final byte RESULT_16 = 16;


	
	public static String encode32(String text){
		return encodeText(text, RESULT_32);
	}
	
	public static String encode16(String text){
		return encodeText(text, RESULT_16);
	}
	
	public static String encode32(byte[] bytes){
		
		return encodeBytes(bytes, RESULT_32);
	}
	
	public static String encode16(byte[] bytes){
		
		return encodeBytes(bytes, RESULT_16);
	}
	
	
	private static String encode(byte[] bytes, byte result){
		
		String resultStr = encode(bytes);
		
		if(RESULT_32 == result){
			return resultStr;
		}
		return resultStr.substring(8, 24);
		
	}
	
	private static String encodeBytes(byte[] bytes, byte result) {
		byte[] originalBytes = null;
		                   
		try {
			originalBytes = getBytes(bytes);
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		
		return encode(originalBytes, result);
	}
	
	private static String encodeText(String plainText, byte result) {
		byte[] originalBytes = null;
		                   
		try {
			originalBytes = getBytes(plainText);
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		
		return encode(originalBytes, result);
	}
	
	private static String encode(byte bytes[]){
		
		int i;
		StringBuffer buf = new StringBuffer();
		for (int offset = 0; offset < bytes.length; offset++) {
			i = bytes[offset];
			if (i < 0)
				i += 256;
			if (i < 16)
				buf.append("0");
			buf.append(Integer.toHexString(i));
		}
		
		return buf.toString();
	}
	
	private static byte[] getBytes(String plainText) throws NoSuchAlgorithmException{
		MessageDigest md5 = MessageDigest.getInstance("MD5");
		md5.update(plainText.getBytes());		
		return md5.digest();
	}
	
	private static byte[] getBytes(byte[] bytes) throws NoSuchAlgorithmException{
		MessageDigest md5 = MessageDigest.getInstance("MD5");
		md5.update(bytes);		
		return md5.digest();
	}
	
//	public static void main(String[] args){
//		System.out.println(MD5.encode32("abc")); // 900150983cd24fb0d6963f7d28e17f72
//		System.out.println(MD5.encode32("abc".getBytes())); // 900150983cd24fb0d6963f7d28e17f72
//		System.out.println(MD5.encode32("")); // d41d8cd98f00b204e9800998ecf8427e
//		System.out.println(MD5.encode32("".getBytes())); // d41d8cd98f00b204e9800998ecf8427e
//		System.out.println(MD5.encode32("abcdefghijklmnopqrstuvwxyz")); // c3fcd3d76192e4007dfb496cca67e13b
//		System.out.println(MD5.encode32("abcdefghijklmnopqrstuvwxyz".getBytes())); // c3fcd3d76192e4007dfb496cca67e13b
//		System.out.println(MD5.encode32("message digest"));// f96b697d7cb7938d525a2f31aaf161d0
//		System.out.println(MD5.encode32("message digest".getBytes()));// f96b697d7cb7938d525a2f31aaf161d0
//	}
	
	
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值