• 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 pwd
    15      *            需要加密的字符串
    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&255
    32                 /*
    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: 0000
    36                  * 0000 0000 0000 0000 0000 1111 1111 结果:0000 0000 0000 0000
    37                  * 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 block
    53             e.printStackTrace();
    54         }
    55         return "";
    56     }
    57 
    58     /**
    59      * @param args
    60      */
    61     public static void main(String[] args) {
    62         String pwd = MD5Utils.getPwd("abc");
    63         System.out.println(pwd);
    64     }
    65 
    66 }

     

     
  • 相关阅读:
    adb 连接 Android 手机的两种方式
    Jmeter GUI及NON GUI下实现分布式
    史上最全最细 App 自动化环境部署
    不懂Java代码,照样把jmeter指定数据写入execl
    Dockerfile 让你轻松创建属于你的镜像 (下)
    Dockerfile 让你轻轻松松创建属于你的镜像 (上)
    Python vs Java (一):史上最全变量类型区别,99.99%的人都收藏了
    浏览器F12调试器定位系统前后端bug
    cookie,session
    App 抓包提示网络异常怎么破?(抓包HTTPS)
  • 原文地址:https://www.cnblogs.com/CQY1183344265/p/5851456.html
Copyright © 2020-2023  润新知