博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA中简单的MD5加密类(MD5Utils)
阅读量:7222 次
发布时间:2019-06-29

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

MD5加密分析:
 
JDK API:
 
获取对象的API:
 
加密的API:
 
1 package cn.utils; 2  3 import java.security.MessageDigest; 4 import java.security.NoSuchAlgorithmException; 5  6 /** 7  * @author CQY13 MD5加密工具类 8  */ 9 public class MD5Utils {10 11     /**12      * 获取MD5加密13      * 14      * @param pwd15      *            需要加密的字符串16      * @return String字符串 加密后的字符串17      */18     public static String getPwd(String pwd) {19         try {20             // 创建加密对象21             MessageDigest digest = MessageDigest.getInstance("md5");22 23             // 调用加密对象的方法,加密的动作已经完成24             byte[] bs = digest.digest(pwd.getBytes());25             // 接下来,我们要对加密后的结果,进行优化,按照mysql的优化思路走26             // mysql的优化思路:27             // 第一步,将数据全部转换成正数:28             String hexString = "";29             for (byte b : bs) {30                 // 第一步,将数据全部转换成正数:31                 // 解释:为什么采用b&25532                 /*33                  * b:它本来是一个byte类型的数据(1个字节) 255:是一个int类型的数据(4个字节)34                  * byte类型的数据与int类型的数据进行运算,会自动类型提升为int类型 eg: b: 1001 1100(原始数据)35                  * 运算时: b: 0000 0000 0000 0000 0000 0000 1001 1100 255: 000036                  * 0000 0000 0000 0000 0000 1111 1111 结果:0000 0000 0000 000037                  * 0000 0000 1001 1100 此时的temp是一个int类型的整数38                  */39                 int temp = b & 255;40                 // 第二步,将所有的数据转换成16进制的形式41                 // 注意:转换的时候注意if正数>=0&&<16,那么如果使用Integer.toHexString(),可能会造成缺少位数42                 // 因此,需要对temp进行判断43                 if (temp < 16 && temp >= 0) {44                     // 手动补上一个“0”45                     hexString = hexString + "0" + Integer.toHexString(temp);46                 } else {47                     hexString = hexString + Integer.toHexString(temp);48                 }49             }50             return hexString;51         } catch (NoSuchAlgorithmException e) {52             // TODO Auto-generated catch block53             e.printStackTrace();54         }55         return "";56     }57 58     /**59      * @param args60      */61     public static void main(String[] args) {62         String pwd = MD5Utils.getPwd("abc");63         System.out.println(pwd);64     }65 66 }

 

 

转载于:https://www.cnblogs.com/CQY1183344265/p/5851456.html

你可能感兴趣的文章
Nested loops、Hash join、Sort merge join(三种连接类型原理、使用要点)
查看>>
RT-Thread的线程(任务)处理 rt_thread_create/rt_thread_init区别
查看>>
为什么需要单元测试
查看>>
[原]shell中的三个零碎知识
查看>>
piix4_smbus 0000:00:07.0: SMBus base address uninitialized - upgrade BIOS or use force_addr=0xaddr
查看>>
操作MSSQL服务还有测试是否连接
查看>>
vim命令拾遗[zz]
查看>>
简单PHP留言板之七 —— 附加上css样式表
查看>>
数据库开发篇(一)——转换日期类型
查看>>
php 燕十八 观察者模式代码例子
查看>>
利用Android Lost通过互联网或短信远程控制安卓设备
查看>>
用JvisualVM监视远程tomcat
查看>>
python基础 - 文件读写
查看>>
成大事必备9种能力、9种手段、9种心态
查看>>
php 依赖注入容器
查看>>
matlab设定mex接驳的C/C++编译器
查看>>
Linux系统备份与恢复
查看>>
机场打车有感
查看>>
利用数组创建的顺序表实现各种功能
查看>>
POJ - 1062 昂贵的聘礼(最短路Dijkstra)
查看>>