zoukankan      html  css  js  c++  java
  • MyMD5Utils

    package com.lh.micro.datasource.util;

    import java.io.UnsupportedEncodingException;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;

    /**
    * <p> 功能说明: </p> <ul> <li></li> </ul> <p> Created by Chen,Wenbi 2015/6/26. </p> <p> Email Address: <a
    * href=“chenwb@lianlian.com.cn”>chenwb@lianlian.com.cn</a> </p>
    */
    public class MyMD5Utils {

    /**
    * 将指定的字符串用MD5加密
    *
    * @param originstr 需要加密的字符串
    * @return 加密后字符串
    */
    public static String ecodeByMD5(String originstr) {

    String result = null;

    char[] hexDigits = {// 用来将字节转换成 16 进制表示的字符

    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};

    if (originstr != null) {

    try {

    // 返回实现指定摘要算法的 MessageDigest 对象

    MessageDigest md = MessageDigest.getInstance("MD5");

    // 使用utf-8编码将originstr字符串编码并保存到source字节数组

    byte[] source = originstr.getBytes("utf-8");

    // 使用指定的 byte 数组更新摘要

    md.update(source);

    // 通过执行诸如填充之类的最终操作完成哈希计算,结果是一个128位的长整数

    byte[] tmp = md.digest();

    // 用16进制数表示需要32位

    char[] str = new char[32];

    for (int i = 0, j = 0; i < 16; i++) {

    // j表示转换结果中对应的字符位置

    // 从第一个字节开始,对 MD5 的每一个字节

    // 转换成 16 进制字符

    byte b = tmp[i];

    // 取字节中高 4 位的数字转换

    // 无符号右移运算符>>> ,它总是在左边补0

    // 0x代表它后面的是十六进制的数字. f转换成十进制就是15

    str[j++] = hexDigits[b >>> 4 & 0xf];

    // 取字节中低 4 位的数字转换

    str[j++] = hexDigits[b & 0xf];

    }

    result = new String(str);// 结果转换成字符串用于返回

    } catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    }
    }

    return result;
    }

    public static String selfMd5(String originVal, String key) {

    //先倒序,拼接key
    final String v1 = new StringBuilder(originVal).reverse().append(key).toString();

    //MD5计算
    return ecodeByMD5(v1);
    }
    }
  • 相关阅读:
    javaweb消息中间件——rabbitmq入门
    virtual box 桥接模式(bridge adapter)下无法获取ip(determine ip failed)的解决方法
    Apache Kylin本地启动
    git操作
    Java学习总结
    Java中同步的几种实现方式
    hibernate exception nested transactions not supported 解决方法
    vue 中解决移动端使用 js sdk 在ios 上一直报invalid signature 的问题解决
    cookie 的使用
    vue 专门为了解决修改微信标题而生的项目
  • 原文地址:https://www.cnblogs.com/guokezhiren/p/9104294.html
Copyright © 2011-2022 走看看