java MD5加密实现代码_java

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

package com.pb;

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

/*
 * 验证MD5
 * 1.初始化MessageDigest信息摘要对象
 * 2.传入需要计算的字符串更新摘要信息
 * 3.计算信息摘要
 * 4.将byte[] 转换为找度为32位的16进制字符串
 */
public class MD5 {
  /*
   * 生成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;
/*
 * MD5 算法
*/
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"));
  }
}

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
MD5加密
java实现md5加密解密、php实现java的md5加密、java实现md5加密、php 实现java md5加密、md5加密算法 java实现,以便于您获取更多的相关知识。

时间: 2024-08-07 06:35:10

java MD5加密实现代码_java的相关文章

Java实现MD5加密的方法_java

本文实例讲述了Java实现MD5加密的方法.分享给大家供大家参考.具体实现方法如下: import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5HashUtil { private MessageDigest md = null; private static MD5HashUtil md5 = null; private static final char

Java后端实现MD5加密的方法_java

前言 在我们开发是要考虑这个功能,当用户忘记密码的情况下,我们需要动态的发给他一个6位的随机密码,通过即时通,短信,微信等.并同时修改数据库中的原密码为这6位的随机密码.让用户再去修改密码. 同时在数据库中的密码必须存为密文,于是需要使用到MD5加密.生成的6位随机密码需要保密,不能在前台处理,只能放在后端.于是我选择放在了控制层中 示例代码 //传入任何需要加密的文本进行加密 public static String getMd5(String string) { try { MessageD

Java生成MD5加密字符串代码实例_java

      (1)一般使用的数据库中都会保存用户名和密码,其中密码不使用明码保存.     有时候用MD5密码,很多语言都提供了将字符串生成为MD5密码的方法或函数.MD5的加密算法是公开的.     有时候也可以用自己的字符串加密算法,这种加密算法是只有自己知道的. (2)破解MD5的过程就是先算好大量或者所有可能的字符串的MD5数值,之后进行查询就可以破解.虽然有些网站规定了密码的位数在6~20位之间,但是要事先计算这么多是字符串并有效的组织存储.查询还是相当麻烦,相当慢的. 因为MD5的位

java编程下字符串的16位,32位md5加密实现方法_java

如下所示: package cn.sunzn.md5; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class Str2MD5 { public static void main(String[] args) { MD5("sunzn"); } private static String MD5(String sourceStr) { String r

asp.net中md5加密实现代码

 代码如下 复制代码 public class FormatStr { #region MD5加密 /// <summary> /// MD5加密操作 /// </summary> /// <param name="str">加密的字符串</param> /// <returns></returns> public static string MD5(string str) {  return System.Web

java分割日期时间段代码_java

本文实例为大家分享了java切割日期时间段代码,供大家参考,具体内容如下 /** * @author dy * @since 2016-09-18 & JDK 1.8.0_91 */ public class DateCalculate { static Logger logger = LoggerFactory.getLogger(DateCalculate.class); /** * 切割时间段 * * @param dateType 交易类型 M/D/H/N -->每月/每天/每小时/

java生成图片验证码实例代码_java

关于java图片验证码的文章最近更新了不少,帮助大家掌握java验证码的生成技术,下文为大家分享了java生成图片验证码最简单的方法,供大家参考. 现在各行业在定制系统时都会考虑到机器注册,现在最有效的方式就是输入验证.现在的验证方式有很多种: 一.问题验证,其实也是图片验证,在图片上生成问题,然后输入框输入答案. 二.图片验证,输入图片上展示的文字信息. 三.短信验证,比较繁杂,用户也不怎么喜欢. 四.还有就是百度最新的验证方式.图片上生成文字,然后出现一个文字点击框,选择你在验证图片上看到的

java中实现四则运算代码_java

代码的思路是通过正则判断计算每个最小的计算单元.以下是代码: import java.math.BigDecimal; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 计算器工具类 * @author shuqi * @date 2015-7-23 * @version since 1.0 */ public class CalculatorUtil { public static BigDecimal

java登录验证码实现代码_java

VerifyCodeServlet.java类: 复制代码 代码如下: package com.spring.controller;import java.awt.Color;         import java.awt.Font;         import java.awt.Graphics2D;         import java.awt.image.BufferedImage;         import java.util.Random;         import ja