首页 > 代码库 > JAVA中简单的MD5加密类(MD5Utils)
JAVA中简单的MD5加密类(MD5Utils)
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 }
JAVA中简单的MD5加密类(MD5Utils)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。