博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MD5加密算法(实际应用)
阅读量:6107 次
发布时间:2019-06-21

本文共 2050 字,大约阅读时间需要 6 分钟。

1 package Util; 2  3 import java.security.MessageDigest; 4 import java.security.NoSuchAlgorithmException; 5  6 import sun.security.provider.MD5; 7  8 public class MD5Util { 9 private static final char[] hexDigest = new char[]{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};10     11     /**12      * MD5加密算法13      * @param content14      * @return15      */16     public static String md5(String content)17     {18         try {19             //1. 返回实现指定摘要算法的 MessageDigest 对象20             MessageDigest md = MessageDigest.getInstance("MD5");21             22             //2.获取待加密字符串的byte数组23             byte[] bytes = content.getBytes();24             25             //3.使用指定的 byte 数组更新摘要26             md.update(bytes);27             28             //4.加密: 通过执行诸如填充之类的最终操作完成哈希计算29             byte[] newBytes = md.digest();    //得到长度为16的字节数组30             31             //5.将长度为16的byte数组表示为32位十六进制数字32             /*byte a = -81;33             System.out.println(Integer.toBinaryString(a));      //111111111111111111111111  1010 1111  字节有效位8位34             System.out.println(Integer.toBinaryString(a >>> 4 & 0xf));//111111111111111111111111  1010  无符号右移四位,与0xf做与运算,去24个135             System.out.println(Integer.toBinaryString(a & 0xf));//111136 */            37             //System.out.println(Integer.toHexString(a >>> 4 & 0xf));38             //System.out.println(Integer.toHexString(a & 0xf));39             40             char[] result = new char[newBytes.length * 2];//定义存储十六进制数结果的字符数组41             int k = 0;42             for (int i = 0; i < newBytes.length; i++) {43                 byte c = newBytes[i];44                 result[k++] = hexDigest[c >>> 4 & 0xf];//高四位45                 result[k++] = hexDigest[c & 0xf]; //低四位46             }47             48             return new String(result);49             50         } catch (NoSuchAlgorithmException e) {51             e.printStackTrace();52         }53         return "";54     }55 }

 

将此类封装进工具包中,需要加密时即可取出使用

转载于:https://www.cnblogs.com/ccw95/p/6035076.html

你可能感兴趣的文章
Oracle表分区
查看>>
centos 下安装g++
查看>>
嵌入式,代码调试----GDB扫盲
查看>>
类斐波那契数列的奇妙性质
查看>>
配置设置[Django]引入模版之后报错Requested setting TEMPLATE_DEBUG, but settings are not configured....
查看>>
下一步工作分配
查看>>
Response. AppendHeader使用大全及文件下载.net函数使用注意点(转载)
查看>>
Wait Functions
查看>>
代码描述10313 - Pay the Price
查看>>
jQuery最佳实践
查看>>
centos64i386下apache 403没有权限访问。
查看>>
vb sendmessage 详解1
查看>>
jquery用法大全
查看>>
Groonga 3.0.8 发布,全文搜索引擎
查看>>
PC-BSD 9.2 发布,基于 FreeBSD 9.2
查看>>
网卡驱动程序之框架(一)
查看>>
css斜线
查看>>
Windows phone 8 学习笔记(3) 通信
查看>>
重新想象 Windows 8 Store Apps (18) - 绘图: Shape, Path, Stroke, Brush
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>