JAVA中简单的MD5加密类(MD5Utils)
2024-10-19 04:23:55
MD5加密分析:
JDK API:
获取对象的API:
加密的API:
package cn.utils; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; /**
* @author CQY13 MD5加密工具类
*/
public class MD5Utils { /**
* 获取MD5加密
*
* @param pwd
* 需要加密的字符串
* @return String字符串 加密后的字符串
*/
public static String getPwd(String pwd) {
try {
// 创建加密对象
MessageDigest digest = MessageDigest.getInstance("md5"); // 调用加密对象的方法,加密的动作已经完成
byte[] bs = digest.digest(pwd.getBytes());
// 接下来,我们要对加密后的结果,进行优化,按照mysql的优化思路走
// mysql的优化思路:
// 第一步,将数据全部转换成正数:
String hexString = "";
for (byte b : bs) {
// 第一步,将数据全部转换成正数:
// 解释:为什么采用b&255
/*
* b:它本来是一个byte类型的数据(1个字节) 255:是一个int类型的数据(4个字节)
* byte类型的数据与int类型的数据进行运算,会自动类型提升为int类型 eg: b: 1001 1100(原始数据)
* 运算时: b: 0000 0000 0000 0000 0000 0000 1001 1100 255: 0000
* 0000 0000 0000 0000 0000 1111 1111 结果:0000 0000 0000 0000
* 0000 0000 1001 1100 此时的temp是一个int类型的整数
*/
int temp = b & 255;
// 第二步,将所有的数据转换成16进制的形式
// 注意:转换的时候注意if正数>=0&&<16,那么如果使用Integer.toHexString(),可能会造成缺少位数
// 因此,需要对temp进行判断
if (temp < 16 && temp >= 0) {
// 手动补上一个“0”
hexString = hexString + "0" + Integer.toHexString(temp);
} else {
hexString = hexString + Integer.toHexString(temp);
}
}
return hexString;
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
} /**
* @param args
*/
public static void main(String[] args) {
String pwd = MD5Utils.getPwd("abc");
System.out.println(pwd);
} }
最新文章
- AD设置板子原点
- C# 解析json
- Java排序算法——选择排序
- October 10th 2016 Week 42nd Monday
- 二十五、【开源】EFW框架Winform前端开发之强大的自定义控件库
- GCD初步认识
- MVC Model Binder 规则
- Fix Some bytes have been replaced with the Unicode substitution character while loading file XXX.cs with Chinese Simplified (GB2312) encoding
- Exchange 2010 实用小技巧
- BZOJ 1004: [HNOI2008]Cards [Polya 生成函数DP]
- 初识RabbitMQ系列之二:下载安装
- [shiro学习笔记]第二节 shiro与web融合实现一个简单的授权认证
- #254 Check for Palindromes
- fastclick的介绍和使用
- docker的安装及使用
- 玄学曲线并不玄 教你如何看懂GPU呈现
- 39-java中Arrays.sort 和 collections.sort()总结
- 微信小程序支付源码,后台服务端代码
- JVM-Java GC分析
- spring使用ApplicationContext读取资源文件
热门文章
- 【BZOJ】2819: Nim(树链剖分 / lca+dfs序+树状数组)
- 【洛谷】P1541 乌龟棋(四维背包dp)
- 升级phpcms的ckeditor编辑器
- 使用JAVA爬取去哪儿网入住信息
- SqlServer之geometry格式数据的添加和修改
- 在线程中调用其它主界面的模块,因为中间有休息1000ms,所以调用前要检查DateTimeRun变量;在From_load 启动线程;在From_closing From_closed 设置DateTimeRun=false
- ES6中新添加的Array.prototype.fill
- jira 安装
- kali linux:wireshark不能被root用户启用的解决方案
- poolmanager1.path-o-logical 很好的prefab preload工具