栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java MD5加密实现代码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java MD5加密实现代码

先从下面这张图对MD5加密实现进行了解,具体如下

package com.pb;

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


public class MD5 {
  
  public void generateMD5(String input){
    
    try {
      //1.初始化MessageDigest信息摘要对象,并指定为MD5不分大小写都可以
      MessageDigest md=MessageDigest.getInstance("md5");
//2.传入需要计算的字符串更新摘要信息,传入的为字节数组byte[],
      //将字符串转换为字节数组使用getBytes()方法完成
      //指定时其字符编码 为utf-8
      md.update(input.getBytes("utf-8"));
//3.计算信息摘要digest()方法
      //返回值为字节数组
      byte [] hashCode=md.digest();
//4.将byte[] 转换为找度为32位的16进制字符串
 //声明StringBuffer对象来存放最后的值
      StringBuffer sb=new StringBuffer();
      //遍历字节数组
      for(byte b:hashCode){
 //对数组内容转化为16进制,
 sb.append(Character.forDigit(b>>4&0xf, 16));
 //换2次为32位的16进制
 sb.append(Character.forDigit(b&0xf, 16));
      }
      System.out.println("加密后的结果是:"+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类的对象
    MD5 md5=new MD5();
    //使用Scanner来输入一个字符
    Scanner scanner=new Scanner(System.in);
    System.out.println("请输入要加密的内容:");
    String input = scanner.nextLine();
    //调用加密方法
    md5.generateMD5(input);

  }
  
}

结果: 

请输入要加密的内容:
学习MD5加密过程
加密后的结果是: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 对象
      MessageDigest mdInst = MessageDigest.getInstance("MD5");
      // 使用指定的字节更新摘要
      mdInst.update(btInput);
      // 获得密文
      byte[] md = mdInst.digest();
      // 把密文转换成十六进制的字符串形式
      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实现

package other;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5 {
  
  // 全局数组
  private final static String[] strDigits = { "0", "1", "2", "3", "4", "5",
      "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };

  public MD5() {
  }

  // 返回形式为数字跟字符串
  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];
  }

  // 返回形式只为数字
  private static String byteTonum(byte bByte) {
    int iRet = bByte;
    System.out.println("iRet1=" + iRet);
    if (iRet < 0) {
      iRet += 256;
    }
    return String.valueOf(iRet);
  }

  // 转换字节数组为16进制字串
  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() 该函数返回值为存放哈希值结果的byte数组
      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"));
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/149447.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号