java MD5加密实现代码

网友投稿 194 2023-07-09


java MD5加密实现代码

先从下面这张图对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.dVLxozigest();

// 把密文转换成十六进制的字符串形式

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"));

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:深入理解(function(){... })();
下一篇:MyBatis SqlMapConfig.xml配置
相关文章

 发表评论

暂时没有评论,来抢沙发吧~