首页 > 编程语言 >MD5算法工具类

MD5算法工具类

时间:2022-09-21 18:13:17浏览次数:56  
标签:return String bytes 算法 static 工具 md5 MD5

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5算法工具类
 * @author XLINK
 *
 */
public class MD5Tool {

    /**
     * 16位md5
     * @return
     */
    public static String hexMD5(String string){
        String md5 = MD5(string);
        if(null != md5 && md5.length() >= 24){
            md5 = md5.substring(8, 24);
        }
        return md5;
    }

    /**
     * MD5方法
     *
     * @param string
     * @return String
     */
    public static String MD5(String string) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            return byteArrayToHexString(md.digest(string.getBytes()));
        } catch (NoSuchAlgorithmException e) {
            return null;
        }
    }

    /**
     * MD5加密
     * @param bytes
     * @return
     */
    public static String MD5(byte[] bytes){
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            return byteArrayToHexString(md.digest(bytes));
        } catch (NoSuchAlgorithmException e) {
            return null;
        }
    }

    /**
     * 将字节数组转换为十六进制字符串
     * @param bytes
     * @return
     */
    private static String byteArrayToHexString(byte[] bytes) {
        StringBuffer buf = new StringBuffer(bytes.length * 2);
        for (int i = 0; i < bytes.length; i++) {
            if (((int) bytes[i] & 0xff) < 0x10) {
                buf.append("0");
            }
            buf.append(Long.toString((int) bytes[i] & 0xff, 16));
        }
        return buf.toString();
    }

    public static void main(String[] args) {
        String str = MD5Tool.hexMD5("jack");
        System.out.println(str);
    }
}

 

标签:return,String,bytes,算法,static,工具,md5,MD5
From: https://www.cnblogs.com/Jack-zhao/p/16716609.html

相关文章

  • MockServer工具-Moco
    https://cloud.tencent.com/developer/article/1737211?from=article.detail.1465591前言前段时间介绍了Mock基本知识以及市面上常见的Mock工具(Mock工具介绍),今天重点介绍......
  • PID控制算法
    闭环控制(反馈回路closeloop):  闭环控制系统需要目标量,执行器,传感器通过偏差量获得执行量是最为重要的目标量和传感器获得的执行器数据都需要是连续的;偏差量来自于......
  • 《安富莱嵌入式周报》第283期:全开源逆向“爆破”硬件工具,Linux内核6.1将正式引入RUST
    往期周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104本周更新视频:BSP视频教程第23期:通过Modbus解析器,轻松掌握Modbus主......
  • 排序算法基本思想及实现
    一、插入排序1、直接插入排序基本思想:类似抓扑克牌,待排序元素在已排序的序列中从后往前遍历,遇到小于他的元素向后移一位,直至遇到小于或等于他的元素,在其后插入即......
  • 排序算法动画演示
    本文由简悦SimpRead转码,原文地址blog.csdn.net一、直接插入排序(StraightInsertionSorting)把新的数据插入到已经排好的数据列中。将第一个数和第二个数排序,......
  • 算法-动态规划(DP)
     时间:2022/09/21 一.引入-斐波那契数列下图展示了斐波那契数列数列的递归式:然后我们再看一下在计算fib(7)的时候会出现什么问题:如上图所示,在计算fib(7)的时候......
  • Problem P14. [算法课动态规划]连续数组最大和
    感觉很简单的一道题,curnum存下连续数组和大于0的数值,maxnum存下最大连续数组和,curnum从数组头开始,遍历数组,+=数组值,当curnum大于0时,那么即便紧接着的后面有一个很大的......
  • 数据结构算法(一)之二分查找
    internalclassProgram{staticvoidMain(string[]args){varn=50;varrandom=newRandom();while......
  • selenium工具之find_element(by=By.xx, value='xxx') && find_elements(by=By.xx, val
    前言selenium是一款十分强大的Web应用自动化框架,我们可以通过它来自动操控浏览器。操控浏览器的实质是操控浏览器的界面元素,因此定位元素是使用selenium的关键,selenium中......
  • 目标检测YOLO系列算法的进化史
    本文中将简单总结YOLO的发展历史,YOLO是计算机视觉领域中著名的模型之一,与其他的分类方法,例如R-CNN不同,R-CNN将检测结果分为两部分求解:物体类别(分类问题),物体位置即bounding......