java自带的MessageDigest实现文本的md5加密算法
程序员文章站
2024-03-07 23:35:17
本篇使用java自带的messagedigest实现对文本的md5加密算法,具体代码如下:
/**
*@description: 将字符串转化为md...
本篇使用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")); } }