java自带的MessageDigest实现文本的md5加密算法

网友投稿 186 2023-07-23


java自带的MessageDigest实现文本的md5加密算法

本篇使用java自带的MessageDigest实现对文本的md5加密算法,具体代码如下:

/**

*@Description: 将字符串转化为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;

}

}

第二种情况:在进行Java软件开发过程中,难免会对一些数据进行加密,因此Java中提供了自带的MessageDigest实现对文本的加密算法,下面是一个对文本进行加密的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.对文本进行32位小写MD5加密

* @param plainText 要进行加密的文本

* @return 加密后的内容

*/

public static String textToMD5L32(String plainText){

String result = null;

//首先判断是否为空

if(StringUtils.isBlank(plainText)){

return null;

}

try{

//首先进行实例化和初始化

MessageDigest md = MessageDigest.getInstance("MD5");

//得到一个操作系统默认的字节编码格式的字节数组

byte[] btInput = plainText.getBytes();

//对得到的字节数组进行处理

md.update(btInput);

//进行哈希计算并返回结果

byte[] btResult = md.digest();

//进行哈希计算后得到的数据的长度

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.对文本进行32位MD5大写加密

* @param plainText 要进行加密的文本

* @return 加密后的内容

*/

public static String textToMD5U32(String plainText){

if(StringUtils.isBlank(plainText)){

return null;

}

String result = textToMD5L32(plainText);

return result.toUpperCase();

}

第三种情况: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小时内删除侵权内容。

上一篇:通过Java测试几种压缩算法的性能(附测试代码下载)
下一篇:WordPress中卸载插件以及移除文章类型组件的代码示例
相关文章

 发表评论

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