在软件编程中,密码的加密是一件大事,而MD5以其自己独有的安全,难以破解的特性独占鳌头,因此,我对它进行了一定的了解。在这里,我分享一下自己的小经验给大家
1,先声明一个16位的字符串数组
public static String[] hegix = {"0","1","2","3","4","5","6","7","8","9","a"
<span style="font-family: Arial, Helvetica, sans-serif;">,</span><span style="font-family: Arial, Helvetica, sans-serif;">"b","c","d","e","f"};</span>
2创建一个方法,进行数组类型转换
public static String byteToStringhex(byte b){
int n = b;
if(n<0)
n+=256;
int d1=n/16;
//int d2=n%16;
return hegix[d1];
}
3声明一个数组,传入byte类型数组,调用类型转换的方法,得到String类型的字符串
public static String getbytes(byte[] b){
StringBuffer sb=new StringBuffer();
for(int i=0;i<b.length;i++){
sb.append(byteToStringhex(b[i]));
}
return sb.toString();
}
4开始调用MessageDigest方法,创建具有指定算法名称的信息摘要,加密完毕
public static String MD5Encode(String origin,String charsetname){
String resultString = "";
try{
resultString = new String(origin);
MessageDigest md = MessageDigest.getInstance("MD5"); //创建具有指定算法名称的信息摘要(引自jdk 1.8api)
if("".equals(charsetname) || charsetname == null){
resultString = getbytes(md.digest(resultString.getBytes()));
}else{
resultString = getbytes(md.digest(resultString.getBytes(charsetname)));
}
}catch(Exception e){
e.printStackTrace();
}
return resultString;
}