国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Java > 正文

java自帶的MessageDigest實(shí)現(xiàn)文本的md5加密算法

2019-11-26 14:42:42
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本篇使用java自帶的MessageDigest實(shí)現(xiàn)對(duì)文本的md5加密算法,具體代碼如下:

 /**   *@Description: 將字符串轉(zhuǎn)化為MD5  */  package cn.yicha.novel.util;   import java.security.MessageDigest; import java.security.NoSuchAlgorithmException;   public class ParseMD5 {    /**    * @param str    * @return     * @Description: 32位小寫MD5    */   public static String parseStrToMd5L32(String str){     String reStr = null;     try {       MessageDigest md5 = MessageDigest.getInstance("MD5");       byte[] bytes = md5.digest(str.getBytes());       StringBuffer stringBuffer = new StringBuffer();       for (byte b : bytes){         int bt = b&0xff;         if (bt < 16){           stringBuffer.append(0);         }          stringBuffer.append(Integer.toHexString(bt));       }       reStr = stringBuffer.toString();     } catch (NoSuchAlgorithmException e) {       e.printStackTrace();     }     return reStr;   }      /**    * @param str    * @return     * @Description: 32位大寫MD5    */   public static String parseStrToMd5U32(String str){     String reStr = parseStrToMd5L32(str);     if (reStr != null){       reStr = reStr.toUpperCase();     }     return reStr;   }      /**    * @param str    * @return    * @Description: 16位小寫MD5    */   public static String parseStrToMd5U16(String str){     String reStr = parseStrToMd5L32(str);     if (reStr != null){       reStr = reStr.toUpperCase().substring(8, 24);     }     return reStr;   }      /**    * @param str    * @return    * @Description: 16位大寫MD5    */   public static String parseStrToMd5L16(String str){     String reStr = parseStrToMd5L32(str);     if (reStr != null){       reStr = reStr.substring(8, 24);     }     return reStr;   } } 

第二種情況:在進(jìn)行Java軟件開(kāi)發(fā)過(guò)程中,難免會(huì)對(duì)一些數(shù)據(jù)進(jìn)行加密,因此Java中提供了自帶的MessageDigest實(shí)現(xiàn)對(duì)文本的加密算法,下面是一個(gè)對(duì)文本進(jìn)行加密的MD5加密工具類代碼示例:

Java中的MD5加密算法完整版:

package net.yuerwan.commons.util;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import org.apache.commons.lang.StringUtils;public class MD5Util {/*** 1.對(duì)文本進(jìn)行32位小寫MD5加密* @param plainText 要進(jìn)行加密的文本* @return 加密后的內(nèi)容*/public static String textToMD5L32(String plainText){String result = null;//首先判斷是否為空if(StringUtils.isBlank(plainText)){return null;}try{//首先進(jìn)行實(shí)例化和初始化MessageDigest md = MessageDigest.getInstance("MD5");//得到一個(gè)操作系統(tǒng)默認(rèn)的字節(jié)編碼格式的字節(jié)數(shù)組byte[] btInput = plainText.getBytes();//對(duì)得到的字節(jié)數(shù)組進(jìn)行處理md.update(btInput);//進(jìn)行哈希計(jì)算并返回結(jié)果byte[] btResult = md.digest();//進(jìn)行哈希計(jì)算后得到的數(shù)據(jù)的長(zhǎng)度StringBuffer sb = new StringBuffer();for(byte b : btResult){int bt = b&0xff;if(bt<16){sb.append(0);}sb.append(Integer.toHexString(bt));}result = sb.toString();}catch(NoSuchAlgorithmException e){e.printStackTrace();}return result;}/*** 2.對(duì)文本進(jìn)行32位MD5大寫加密* @param plainText 要進(jìn)行加密的文本* @return 加密后的內(nèi)容*/public static String textToMD5U32(String plainText){if(StringUtils.isBlank(plainText)){return null;}String result = textToMD5L32(plainText);return result.toUpperCase();}

第三種情況:MD5加密算法的java實(shí)現(xiàn)

package other;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;/* * MD5 算法*/public class MD5 {    // 全局?jǐn)?shù)組  private final static String[] strDigits = { "0", "1", "2", "3", "4", "5",      "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };  public MD5() {  }  // 返回形式為數(shù)字跟字符串  private static String byteToArrayString(byte bByte) {    int iRet = bByte;    // System.out.println("iRet="+iRet);    if (iRet < 0) {      iRet += 256;    }    int iD1 = iRet / 16;    int iD2 = iRet % 16;    return strDigits[iD1] + strDigits[iD2];  }  // 返回形式只為數(shù)字  private static String byteToNum(byte bByte) {    int iRet = bByte;    System.out.println("iRet1=" + iRet);    if (iRet < 0) {      iRet += 256;    }    return String.valueOf(iRet);  }  // 轉(zhuǎn)換字節(jié)數(shù)組為16進(jìn)制字串  private static String byteToString(byte[] bByte) {    StringBuffer sBuffer = new StringBuffer();    for (int i = 0; i < bByte.length; i++) {      sBuffer.append(byteToArrayString(bByte[i]));    }    return sBuffer.toString();  }  public static String GetMD5Code(String strObj) {    String resultString = null;    try {      resultString = new String(strObj);      MessageDigest md = MessageDigest.getInstance("MD5");      // md.digest() 該函數(shù)返回值為存放哈希值結(jié)果的byte數(shù)組      resultString = byteToString(md.digest(strObj.getBytes()));    } catch (NoSuchAlgorithmException ex) {      ex.printStackTrace();    }    return resultString;  }  public static void main(String[] args) {    MD5 getMD5 = new MD5();    System.out.println(getMD5.GetMD5Code("000000"));  }}

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 凌云县| 潜江市| 出国| 沾益县| 维西| 治多县| 襄樊市| 宁陕县| 乌拉特中旗| 义马市| 延边| 邯郸市| 调兵山市| 巴林右旗| 乌拉特前旗| 邵阳县| 张家口市| 河东区| 新源县| 兴安县| 石家庄市| 龙岩市| 威海市| 盈江县| 五峰| 阳泉市| 唐河县| 新兴县| 闽侯县| 黄石市| 浦县| 安国市| 涟水县| 固镇县| 佳木斯市| 伊吾县| 安康市| 哈巴河县| 万安县| 沈阳市| 都江堰市|