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);
} }

 

最新文章

  1. AD设置板子原点
  2. C# 解析json
  3. Java排序算法——选择排序
  4. October 10th 2016 Week 42nd Monday
  5. 二十五、【开源】EFW框架Winform前端开发之强大的自定义控件库
  6. GCD初步认识
  7. MVC Model Binder 规则
  8. Fix Some bytes have been replaced with the Unicode substitution character while loading file XXX.cs with Chinese Simplified (GB2312) encoding
  9. Exchange 2010 实用小技巧
  10. BZOJ 1004: [HNOI2008]Cards [Polya 生成函数DP]
  11. 初识RabbitMQ系列之二:下载安装
  12. [shiro学习笔记]第二节 shiro与web融合实现一个简单的授权认证
  13. #254 Check for Palindromes
  14. fastclick的介绍和使用
  15. docker的安装及使用
  16. 玄学曲线并不玄 教你如何看懂GPU呈现
  17. 39-java中Arrays.sort 和 collections.sort()总结
  18. 微信小程序支付源码,后台服务端代码
  19. JVM-Java GC分析
  20. spring使用ApplicationContext读取资源文件

热门文章

  1. 【BZOJ】2819: Nim(树链剖分 / lca+dfs序+树状数组)
  2. 【洛谷】P1541 乌龟棋(四维背包dp)
  3. 升级phpcms的ckeditor编辑器
  4. 使用JAVA爬取去哪儿网入住信息
  5. SqlServer之geometry格式数据的添加和修改
  6. 在线程中调用其它主界面的模块,因为中间有休息1000ms,所以调用前要检查DateTimeRun变量;在From_load 启动线程;在From_closing From_closed 设置DateTimeRun=false
  7. ES6中新添加的Array.prototype.fill
  8. jira 安装
  9. kali linux:wireshark不能被root用户启用的解决方案
  10. poolmanager1.path-o-logical 很好的prefab preload工具