zoukankan      html  css  js  c++  java
  • Java-MD5

     1 /**
     2  * 加密类
     3  */
     4 public class MD5Util {
     5     /**
     6      * 进行MD5加密
     7      */
     8     public static String entryptByMD5(String originstr) {
     9         String result = null;
    10         char hexDigits[] = { // 用来将字节转换成 16 进制表示的字符
    11                 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
    12         if (originstr != null) {
    13             try {
    14                 // 返回实现指定摘要算法的 MessageDigest 对象
    15                 MessageDigest md = MessageDigest.getInstance("MD5");
    16                 // 使用utf-8编码将originstr字符串编码并保存到source字节数组
    17                 byte[] source = originstr.getBytes("utf-8");
    18                 // 使用指定的 byte 数组更新摘要
    19                 md.update(source);
    20                 // 通过执行诸如填充之类的最终操作完成哈希计算,结果是一个128位的长整数
    21                 byte[] tmp = md.digest();
    22                 // 用16进制数表示需要32位
    23                 char[] str = new char[32];
    24                 for (int i = 0, j = 0; i < 16; i++) {
    25                     // j表示转换结果中对应的字符位置
    26                     // 从第一个字节开始,对 MD5 的每一个字节
    27                     // 转换成 16 进制字符
    28                     byte b = tmp[i];
    29                     // 取字节中高 4 位的数字转换
    30                     // 无符号右移运算符>>> ,它总是在左边补0
    31                     // 0x代表它后面的是十六进制的数字. f转换成十进制就是15
    32                     str[j++] = hexDigits[b >>> 4 & 0xf];
    33                     // 取字节中低 4 位的数字转换
    34                     str[j++] = hexDigits[b & 0xf];
    35                 }
    36                 result = new String(str);// 结果转换成字符串用于返回
    37             } catch (NoSuchAlgorithmException e) {
    38                 // 当请求特定的加密算法而它在该环境中不可用时抛出此异常
    39                 e.printStackTrace();
    40             } catch (UnsupportedEncodingException e) {
    41                 // 不支持字符编码异常
    42                 e.printStackTrace();
    43             }
    44         }
    45         return result;
    46     }
    47 }
  • 相关阅读:
    构造方法
    linux操作系统基础篇(四)
    linux操作系统基础篇(三)
    linux操作系统基础篇(二)
    linux操作系统基础篇(一)
    计算机网络基础
    计算机操作系统
    计算机基础!
    Open vSwitch intro
    Less(11)
  • 原文地址:https://www.cnblogs.com/wang1001/p/9768201.html
Copyright © 2011-2022 走看看