java自带的MessageDigest实现文本的md5加密算法
本篇使用java自带的MessageDigest实现对文本的md5加密算法,具体代码如下:
/** *@Description:将字符串转化为MD5 */ packagecn.yicha.novel.util; importjava.security.MessageDigest; importjava.security.NoSuchAlgorithmException; publicclassParseMD5{ /** *@paramstr *@return *@Description:32位小写MD5 */ publicstaticStringparseStrToMd5L32(Stringstr){ StringreStr=null; try{ MessageDigestmd5=MessageDigest.getInstance("MD5"); byte[]bytes=md5.digest(str.getBytes()); StringBufferstringBuffer=newStringBuffer(); for(byteb:bytes){ intbt=b&0xff; if(bt<16){ stringBuffer.append(0); } stringBuffer.append(Integer.toHexString(bt)); } reStr=stringBuffer.toString(); }catch(NoSuchAlgorithmExceptione){ e.printStackTrace(); } returnreStr; } /** *@paramstr *@return *@Description:32位大写MD5 */ publicstaticStringparseStrToMd5U32(Stringstr){ StringreStr=parseStrToMd5L32(str); if(reStr!=null){ reStr=reStr.toUpperCase(); } returnreStr; } /** *@paramstr *@return *@Description:16位小写MD5 */ publicstaticStringparseStrToMd5U16(Stringstr){ StringreStr=parseStrToMd5L32(str); if(reStr!=null){ reStr=reStr.toUpperCase().substring(8,24); } returnreStr; } /** *@paramstr *@return *@Description:16位大写MD5 */ publicstaticStringparseStrToMd5L16(Stringstr){ StringreStr=parseStrToMd5L32(str); if(reStr!=null){ reStr=reStr.substring(8,24); } returnreStr; } }
第二种情况:在进行Java软件开发过程中,难免会对一些数据进行加密,因此Java中提供了自带的MessageDigest实现对文本的加密算法,下面是一个对文本进行加密的MD5加密工具类代码示例:
Java中的MD5加密算法完整版:
packagenet.yuerwan.commons.util; importjava.security.MessageDigest; importjava.security.NoSuchAlgorithmException; importorg.apache.commons.lang.StringUtils; publicclassMD5Util{ /** *1.对文本进行32位小写MD5加密 *@paramplainText要进行加密的文本 *@return加密后的内容 */ publicstaticStringtextToMD5L32(StringplainText){ Stringresult=null; //首先判断是否为空 if(StringUtils.isBlank(plainText)){ returnnull; } try{ //首先进行实例化和初始化 MessageDigestmd=MessageDigest.getInstance("MD5"); //得到一个操作系统默认的字节编码格式的字节数组 byte[]btInput=plainText.getBytes(); //对得到的字节数组进行处理 md.update(btInput); //进行哈希计算并返回结果 byte[]btResult=md.digest(); //进行哈希计算后得到的数据的长度 StringBuffersb=newStringBuffer(); for(byteb:btResult){ intbt=b&0xff; if(bt<16){ sb.append(0); } sb.append(Integer.toHexString(bt)); } result=sb.toString(); }catch(NoSuchAlgorithmExceptione){ e.printStackTrace(); } returnresult; } /** *2.对文本进行32位MD5大写加密 *@paramplainText要进行加密的文本 *@return加密后的内容 */ publicstaticStringtextToMD5U32(StringplainText){ if(StringUtils.isBlank(plainText)){ returnnull; } Stringresult=textToMD5L32(plainText); returnresult.toUpperCase(); }
第三种情况:MD5加密算法的java实现
packageother; importjava.security.MessageDigest; importjava.security.NoSuchAlgorithmException; /* *MD5算法 */ publicclassMD5{ //全局数组 privatefinalstaticString[]strDigits={"0","1","2","3","4","5", "6","7","8","9","a","b","c","d","e","f"}; publicMD5(){ } //返回形式为数字跟字符串 privatestaticStringbyteToArrayString(bytebByte){ intiRet=bByte; //System.out.println("iRet="+iRet); if(iRet<0){ iRet+=256; } intiD1=iRet/16; intiD2=iRet%16; returnstrDigits[iD1]+strDigits[iD2]; } //返回形式只为数字 privatestaticStringbyteToNum(bytebByte){ intiRet=bByte; System.out.println("iRet1="+iRet); if(iRet<0){ iRet+=256; } returnString.valueOf(iRet); } //转换字节数组为16进制字串 privatestaticStringbyteToString(byte[]bByte){ StringBuffersBuffer=newStringBuffer(); for(inti=0;i<bByte.length;i++){ sBuffer.append(byteToArrayString(bByte[i])); } returnsBuffer.toString(); } publicstaticStringGetMD5Code(StringstrObj){ StringresultString=null; try{ resultString=newString(strObj); MessageDigestmd=MessageDigest.getInstance("MD5"); //md.digest()该函数返回值为存放哈希值结果的byte数组 resultString=byteToString(md.digest(strObj.getBytes())); }catch(NoSuchAlgorithmExceptionex){ ex.printStackTrace(); } returnresultString; } publicstaticvoidmain(String[]args){ MD5getMD5=newMD5(); System.out.println(getMD5.GetMD5Code("000000")); } }