• 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 }
    复制代码

     

     
  • 相关阅读:
    Python之socket
    Python之创建low版的线程池
    Python之面向对象及相关
    Python之面向对象(进阶篇)
    Python之面向对象(初级篇)
    Python之线程与进程
    python中执行父类的构造方法
    python之反射
    记一次有趣的米筐经历~
    算法第四章作业
  • 原文地址:https://www.cnblogs.com/jpfss/p/9334910.html
Copyright © 2020-2023  润新知