java实现MD5加密方法汇总
程序员文章站
2024-03-07 15:24:03
代码一:
/**
* 实现md5加密
*
*/
public class md5 {
/**
* 获取加密后的字符串...
代码一:
/** * 实现md5加密 * */ public class md5 { /** * 获取加密后的字符串 * @param input * @return */ public static string stringmd5(string pw) { try { // 拿到一个md5转换器(如果想要sha1参数换成”sha1”) messagedigest messagedigest =messagedigest.getinstance("md5"); // 输入的字符串转换成字节数组 byte[] inputbytearray = pw.getbytes(); // inputbytearray是输入字符串转换得到的字节数组 messagedigest.update(inputbytearray); // 转换并返回结果,也是字节数组,包含16个元素 byte[] resultbytearray = messagedigest.digest(); // 字符数组转换成字符串返回 return bytearraytohex(resultbytearray); } catch (nosuchalgorithmexception e) { return null; } } public static string bytearraytohex(byte[] bytearray) { // 首先初始化一个字符数组,用来存放每个16进制字符 char[] hexdigits = {'0','1','2','3','4','5','6','7','8','9', 'a','b','c','d','e','f' }; // new一个字符数组,这个就是用来组成结果字符串的(解释一下:一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方)) char[] resultchararray =new char[bytearray.length * 2]; // 遍历字节数组,通过位运算(位运算效率高),转换成字符放到字符数组中去 int index = 0; for (byte b : bytearray) { resultchararray[index++] = hexdigits[b>>> 4 & 0xf]; resultchararray[index++] = hexdigits[b& 0xf]; } // 字符数组组合成字符串返回 return new string(resultchararray); } }
方法二:
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")); } }