欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java MD5加密實(shí)現(xiàn)代碼

 更新時(shí)間:2016年08月15日 10:46:13   投稿:lijiao  
這篇文章主要為大家詳細(xì)介紹了java MD5加密實(shí)現(xiàn)過程,為大家分享了MD5加密代碼,感興趣的小伙伴們可以參考一下

先從下面這張圖對(duì)MD5加密實(shí)現(xiàn)進(jìn)行了解,具體如下

package com.pb;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Scanner;

/*
 * 驗(yàn)證MD5
 * 1.初始化MessageDigest信息摘要對(duì)象
 * 2.傳入需要計(jì)算的字符串更新摘要信息
 * 3.計(jì)算信息摘要
 * 4.將byte[] 轉(zhuǎn)換為找度為32位的16進(jìn)制字符串
 */
public class MD5 {
  /*
   * 生成md5 有傳入?yún)?shù)字符串
   */
  public void generateMD5(String input){
    
    try {
      //1.初始化MessageDigest信息摘要對(duì)象,并指定為MD5不分大小寫都可以
      MessageDigest md=MessageDigest.getInstance("md5");
       //2.傳入需要計(jì)算的字符串更新摘要信息,傳入的為字節(jié)數(shù)組byte[],
      //將字符串轉(zhuǎn)換為字節(jié)數(shù)組使用getBytes()方法完成
      //指定時(shí)其字符編碼 為utf-8
      md.update(input.getBytes("utf-8"));
       //3.計(jì)算信息摘要digest()方法
      //返回值為字節(jié)數(shù)組
      byte [] hashCode=md.digest();
       //4.將byte[] 轉(zhuǎn)換為找度為32位的16進(jìn)制字符串
        //聲明StringBuffer對(duì)象來存放最后的值
      StringBuffer sb=new StringBuffer();
      //遍歷字節(jié)數(shù)組
      for(byte b:hashCode){
        //對(duì)數(shù)組內(nèi)容轉(zhuǎn)化為16進(jìn)制,
        sb.append(Character.forDigit(b>>4&0xf, 16));
        //換2次為32位的16進(jìn)制
        sb.append(Character.forDigit(b&0xf, 16));
      }
      System.out.println("加密后的結(jié)果是:"+sb.toString());
    } catch (NoSuchAlgorithmException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }

  public static void main(String[] args) {
    //聲明加密MD5類的對(duì)象
    MD5 md5=new MD5();
    //使用Scanner來輸入一個(gè)字符
    Scanner scanner=new Scanner(System.in);
    System.out.println("請(qǐng)輸入要加密的內(nèi)容:");
    String input = scanner.nextLine();
    //調(diào)用加密方法
    md5.generateMD5(input);

  }
  
}

結(jié)果: 

請(qǐng)輸入要加密的內(nèi)容:
學(xué)習(xí)MD5加密過程
加密后的結(jié)果是:b826cdac46f01dcc8ccc60a76cebf858

第二段代碼:

package test.md5;

import java.security.MessageDigest;

public class MD5Util {
  public final static String MD5(String s) {
    char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};    

    try {
      byte[] btInput = s.getBytes();
      // 獲得MD5摘要算法的 MessageDigest 對(duì)象
      MessageDigest mdInst = MessageDigest.getInstance("MD5");
      // 使用指定的字節(jié)更新摘要
      mdInst.update(btInput);
      // 獲得密文
      byte[] md = mdInst.digest();
      // 把密文轉(zhuǎn)換成十六進(jìn)制的字符串形式
      int j = md.length;
      char str[] = new char[j * 2];
      int k = 0;
      for (int i = 0; i < j; i++) {
        byte byte0 = md[i];
        str[k++] = hexDigits[byte0 >>> 4 & 0xf];
        str[k++] = hexDigits[byte0 & 0xf];
      }
      return new String(str);
    } catch (Exception e) {
      e.printStackTrace();
      return null;
    }
  }

  public static void main(String[] args) {
    System.out.println(MD5Util.MD5("20121221"));
    System.out.println(MD5Util.MD5("加密"));
  }
}

第三段代碼: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"));
  }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • MyBatis批量插入/修改/刪除MySql數(shù)據(jù)

    MyBatis批量插入/修改/刪除MySql數(shù)據(jù)

    這篇文章主要給大家介紹了關(guān)于MyBatis批量插入/修改/刪除MySql數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Java在Excel中添加水印的實(shí)現(xiàn)(單一水印、平鋪水印)

    Java在Excel中添加水印的實(shí)現(xiàn)(單一水印、平鋪水印)

    這篇文章主要介紹了Java在Excel中添加水印的實(shí)現(xiàn)(單一水印、平鋪水印),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Java Iterator迭代器與foreach循環(huán)代碼解析

    Java Iterator迭代器與foreach循環(huán)代碼解析

    這篇文章主要介紹了Java-Iterator迭代器與foreach循環(huán),主要包括Iterator迭代器接口的操作方法和foreach 循環(huán)語法解析,需要的朋友可以參考下
    2022-04-04
  • Java類初始化執(zhí)行流程解析

    Java類初始化執(zhí)行流程解析

    這篇文章主要介紹了Java類初始化執(zhí)行流程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • java8 stream 由一個(gè)list轉(zhuǎn)化成另一個(gè)list案例

    java8 stream 由一個(gè)list轉(zhuǎn)化成另一個(gè)list案例

    這篇文章主要介紹了java8 stream 由一個(gè)list轉(zhuǎn)化成另一個(gè)list案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • spring security中Authority、Role的區(qū)別及說明

    spring security中Authority、Role的區(qū)別及說明

    這篇文章主要介紹了spring security中Authority、Role的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java初學(xué)者問題圖解(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)

    Java初學(xué)者問題圖解(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)

    本文通過圖文并茂的形式給大家介紹了java初學(xué)者問題,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下
    2017-04-04
  • Java實(shí)現(xiàn)動(dòng)態(tài)獲取文件的絕對(duì)路徑

    Java實(shí)現(xiàn)動(dòng)態(tài)獲取文件的絕對(duì)路徑

    我們知道在?Java?中讀取一些配置文件信息,是在開發(fā)中十分常用的要求。這篇文章就來和大家聊聊Java如何實(shí)現(xiàn)動(dòng)態(tài)獲取文件的絕對(duì)路徑,感興趣的可以了解一下
    2023-02-02
  • SpringBoot中的依賴管理詳解

    SpringBoot中的依賴管理詳解

    這篇文章主要介紹了SpringBoot中的依賴管理詳解,傳統(tǒng)的Spring框架實(shí)現(xiàn)一個(gè)Web服務(wù),需要導(dǎo)入各種依賴JAR包,然后編寫對(duì)應(yīng)的XML配置文件等,相較而言,Spring Boot顯得更加方便、快捷和高效,需要的朋友可以參考下
    2023-08-08
  • 淺談兩個(gè)jar包中包含完全相同的包名和類名的加載問題

    淺談兩個(gè)jar包中包含完全相同的包名和類名的加載問題

    下面小編就為大家?guī)硪黄獪\談兩個(gè)jar包中包含完全相同的包名和類名的加載問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09

最新評(píng)論