zoukankan      html  css  js  c++  java
  • 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 }
    复制代码

     

     
  • 相关阅读:
    jenkins 使用oclint 扫描 oc 代码
    mac下 jenkins 环境搭建
    jenkins 中 Poll SCM 和 Build periodically 的区别
    表单验证封装,一招学会,永远受用
    浅谈js中的执行环境和执行环境对象
    浅谈php之设计模式基础
    四条地铁线带你通往Ajax的大门
    论js结合数学的应用
    以留言本的开发打开ajax的世界
    初步学习css3之3D动画
  • 原文地址:https://www.cnblogs.com/jpfss/p/9334910.html
Copyright © 2011-2022 走看看