package com.kero99.ygc.util;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import sun.misc.BASE64Encoder;
/**利用MD5进行加密
* @param str 待加密的字符串
* @return 加密后的字符串
* @throws NoSuchAlgorithmException 没有这种产生消息摘要的算法
* @throws UnsupportedEncodingException 不支持编码异常
*/
public class YGCMD5 {
//静态方法,便于作为工具类
public static String getMd5(String plainText){
try {
//创建信息摘要对象实例
MessageDigest md = MessageDigest.getInstance("MD5");
//获取文本明文为字节
md.update(plainText.getBytes());
//创建字节摘要数组
byte b[] = md.digest();
//创建 int 类型变量i
int i;
//创建StringBuffer容器
StringBuffer buf = new StringBuffer("");
for (int j = 0; j < b.length; j++) {
i = b[j];
if (i < 0)
i += 256; //md5加密最长32位字符.一个字符占8个字节.所以最长允许256个字节的字符串
if (i < 16) //一个字符=8个字节 0-15不足字符俩字符则补0拼接
buf.append("0");
buf.append(Integer.toHexString(i));//int类型10进制转16进制
}
//32位加密
return buf.toString();
// 16位的加密
//return buf.toString().substring(8, 24);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException {
//测试
System.out.println(YGCMD5.getMd5("hello"));
System.out.println(YGCMD5.getMd5("hello").length());
}
}
MD5简单加密实现32位16位字符
最新推荐文章于 2017-11-29 11:35:47 发布