浅入MD5算法基本原理

来源:互联网 发布:mac word批量导入图片 编辑:程序博客网 时间:2024/06/05 14:28

在软件编程中,密码的加密是一件大事,而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;}




           
2 0