Java中使用MD5加密的四种方法

对外接口MD5加密 本人最近碰到一需求,向第三方下游每日推送数据,接口需加密,接收需解密,本人笔记 阅读详情

方法一、

方法一是比较原始的一种实现方法,首先将文件一次性读入内存,然后通过MessageDigest进行MD5加密,最后再手动将其转换为16进制的MD5值。

public static String MD5(String s)
  {
    char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
    try {
      byte[] btInput = s.getBytes();

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

      mdInst.update(btInput);

      byte[] md = mdInst.digest();

      int j = md.length;
      char[] str = new char[j * 2];
      int k = 0;
      for (int i = 0; i < j; i++) {
        byte byte0 = md[i];
        str[(k++)] = hexDigits[(byte0 >>> 4 & 0xF)];
        str[(k++)] = hexDigits[(byte0 & 0xF)];
      }
      return new String(str);
    }
    catch (Exception e) {
      e.printStackTrace();
    }return null;
  }

方法二、

方法二与方法一不同的地方主要是在步骤三,这里借助了Integer类的方法实现16进制的转换,比方法一更简洁一些。

package com.framework.util;

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

public class MD5Utils {

    public final static String md5(String value){
        String result = null;
        MessageDigest md5 = null;
        try{
            md5 = MessageDigest.getInstance("MD5");
            md5.update((value).getBytes("UTF-8"));
        }catch (NoSuchAlgorithmException error){
            error.printStackTrace();
        }catch (UnsupportedEncodingException e){
            e.printStackTrace();
        }
        byte b[] = md5.digest();
        int i;
        StringBuffer buf = new StringBuffer("");

        for(int offset=0; offset<b.length; offset++){
            i = b[offset];
            if(i<0){
                i+=256;
            }
            if(i<16){
                buf.append("0");
            }
            buf.append(Integer.toHexString(i));
        }

        result = buf.toString();
        return result;
    }
}

方法三、

方法三与前面两个方法相比,在读入文件信息上有点不同。这里是分多次将一个文件读入,对于大型文件而言,比较推荐这种方式,占用内存比较少。步骤三则是通过BigInteger类提供的方法进行16进制的转换。

public static String getMD5Three(String path) {
          BigInteger bi = null;
          try {
              byte[] buffer = new byte[8192];
              int len = 0;
              MessageDigest md = MessageDigest.getInstance("MD5");
              File f = new File(path);
              FileInputStream fis = new FileInputStream(f);
              while ((len = fis.read(buffer)) != -1) {
                 md.update(buffer, 0, len);
             }
             fis.close();
             byte[] b = md.digest();
             bi = new BigInteger(1, b);
         } catch (NoSuchAlgorithmException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }
         return bi.toString(16);
     }

方法四、

如果你只需要使用标准的MD5,其实一行代码就够了,JAVA自带的commons-codec包就提供了获取16进制MD5值的方法。其底层实现上,也是分多次将一个文件读入;
其实方法都是类似的,方法四主要是简洁且性能不错,当然,如果要做一些调整什么的,可以根据自己的需求进行方法的选择。

	DigestUtils.md5Hex(new FileInputStream(path));
java与MD5加密以及两次MD5加密 java中实现MD5加密通常有两种方法 方法一:通过java自带的java.security.MessageDigest实现加密 package com.wantao.md5; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Base64; pub... 阅读详情

相关推荐

Qt+VS集成高德红外相机SDK与OpenCV的采图实践

本文详细介绍了在Qt和Visual Studio环境中集成高德红外相机SDK与OpenCV的完整实践方案。涵盖环境配置、SDK初始化、图像采集与处理、多线程优化等关键技术点,重点解决了高德红外相机数据转换、温度信息提取和Qt界面显示优化等核心问题,为红外图像处理应用开发提供可靠参考。

palm99的专栏 645

Java 实现MD5加密

MD5加密

上庸者-不服周 2万+

TCS34725颜色识别模块实战调校:从“一坨”例程到精准RGB

本文针对TCS34725颜色识别模块初始数据不准的问题,提供了从基础例程到精准调校的实战指南。核心在于通过白光校正与黑白光校正两种方法,补偿传感器偏差与环境光影响,将原始数据准确映射为标准RGB值。文章详细阐述了校准原理、操作步骤与代码实现,并分享了进阶调试技巧与避坑指南,帮助开发者显著提升颜色识别的准确性与项目可靠性。

weixin_29188043的博客 289

Java实现md5加密

本文介绍Java实现md5加密技术

逐梦苍穹的博客 1万+

从厘米级到公里级:北斗网格10级精度在ArcPro中的完整应用指南

本文提供了北斗网格十级精度体系在ArcGIS Pro中的完整应用指南。详细解析了从660公里到1.5厘米的十级网格尺度及其编码逻辑,并重点演示了如何在ArcPro中生成网格、计算编码,以及根据项目需求(如滑坡监测)选择合适精度层级的实战策略。指南旨在帮助GIS专业人士利用这套统一的网格框架,高效管理多尺度空间数据并优化分析工作流。

Black的专栏 472

工业音频故障检测:从CNN到Transformer的技术演进

音频信号处理是工业设备预测性维护的核心技术之一,通过分析设备运行时产生的声波特征实现故障预警。传统方法依赖梅尔频率倒谱系数(MFCC)等手工特征,而深度学习技术尤其是Transformer架构,通过自注意力机制突破了CNN在跨频段特征提取上的局限。Audio Spectrogram Transformer(AST)等先进模型在工业场景中展现出91.2%的高召回率,显著优于传统方案。这种非接触式监测技术结合边缘计算优化,已成功应用于石油化工、电力能源等领域,实现提前72小时预测轴承故障,单项目可避免数百万元的

weixin_30467861的博客 327

Java实现MD5加密的三种方式

所需jar包:commons-codec.jar。方法三:SPRING核心包。

qq_43842093的博客 2万+

运放+三极管恒流源电路设计实战:从原理到仿真一步到位(附Multisim文件)

本文详细解析了运放与三极管构建恒流源电路的核心原理,重点阐述了负反馈机制如何实现精准的电流控制。通过Multisim仿真实战,从电路搭建、参数计算到负载调整率与动态响应分析,一步步指导设计过程,并提供常见故障的调试技巧与PCB设计要点,帮助工程师从理论平稳过渡到可靠实践。

7z8x2c4v6b9的博客 711

java实现MD5加密的三种方式「建议收藏」

所需jar包:commons-codec.jar。方法三:SPRING核心包。

minihuabei的博客 8626

Pyinstaller 打包 Pyzbar 时缺失 DLL 文件的排查与修复指南

本文详细解析了使用Pyinstaller打包Pyzbar库时,因缺失关键DLL文件导致程序闪退的常见问题。文章提供了从问题复现、错误诊断到最终修复的完整解决方案,核心在于通过修改.spec配置文件,手动将缺失的libzbar-64.dll等文件添加到打包过程中,确保生成的可执行文件能独立运行。

wdx012345的博客 504

西门子博途系列学习笔记SCL(三)______自由口通讯(RS485轮询程序)

西门子博途V16系列学习笔记SCL(三)___自由口通讯轮询程序(RS485) 西门子博途系列学习笔记SCL(三)______自由口通讯(RS485轮询程序) 文章目录西门子博途V16系列学习笔记SCL(三)___自由口通讯轮询程序(RS485)前言一、FreePort自由口通讯是什么?二、使用步骤1.模块参数定义2.定义FB功能块参数:3.程序代码如下(每天写代码100行,学不会你来找我):总结 前言 很长时间都没有更新了,主要是最近在学习罗克韦尔的STUDIO5000PLC编程软件,怎么说,和博

weixin_42940283的博客 1万+

MD5加密算法

加密算法是指通过md5工具将密码转换成16进制的字符串,一共32位长度 接下来的代码主要涉及四种加密方式: 1 自定义加密解密 2 普通md5加密 3,md5 加盐加密 4 文件加密,文件加密还是比较靠谱的,不容易被密码撞库破解 package com.daybreak.util; import java.io.File; import java.io.FileInputStream; import java.security.MessageDigest; import java.security.NoS

delete_bug的博客 1449

【Android 11】使用Android Studio调试系统应用之Settings移植(三):构建Settings、SettingsLib项目文件

基于android 11,本系列文章力争实用,讲解使用AS调试系统app的方法,并提供了配套源下载,供学习调试。上一篇文章[Android 11]使用Android Studio调试系统应用(二):依赖分析、android.bp、静态和动态依赖,讲解了如何搭建编译服务器,如何下载AOSP源码,如何切换到AOSP的指定分支(android-11-r39),以及如何编译、解决编译错误、运行模拟器,本文将开始讲解如何构建Settings的AS工程文件! 走过、路过,有用过的同学,记得给个赞O(∩_∩)O哈!

上周的博客 2681

java当中Md5加密总结

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34376562的博客 94

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

JAVA中获取文件的MD5值的几种方法

原文出处:http://blog.youkuaiyun.com/sike_java/article/details/78538762JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现。获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过MessageDigest类进行MD5加密,第三步转换成16进制的MD5码值。几种方法的不...

weixin_39650971的博客 440

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

JAVA中获取文件MD5值的四种方法

       Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,是一种比较常用的哈希算法。      JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现。获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过MessageDigest类进...

关启培的博客 732

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java中md5加密_JAVA中使用MD5加密实现密码加密

1.新建Md5.javapackage com.loger.md5;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import sun.misc.BASE64Encoder;public clas...

weixin_28991555的博客 2085

java调用MD5方法加密

xianjiangao的专栏 4568

md5 java_JAVA使用MD5加密解密

MD5消息摘要算法(英语:MD5Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。这波解释是不是很正经严肃,好像看懂了,但是如果有人问MD5是什么,MD5就是...就是小编也不知道,通俗一点MD5是一种算法,用于数据的安全方面对数据进行加密和解密,虽然MD5被认为不安全,...

weixin_39775428的博客 1571

JAVA中使用MD5加密实现密码加密

MD5加密只能单向加密,不能解密。它的长度一般是32位的16进制数字符串。 因为它是不可逆的,所以在数据库里面看到的密码是无用的,我们不是检验用户的密码,而是检验用户输入的密码经md5加密以后和数据库内的是否相符。 1.新建EncryptUtil.java类 package cn.edu.mju.project1.util; import java.math.BigInteger; import java.security.MessageDigest; /** * 加密工具 * @author :.

kkkjy的博客 1328

java对密码进行加密的方法_如何在JAVA中使用MD5加密对密码进行加密

如何在JAVA中使用MD5加密对密码进行加密发布时间:2020-11-25 17:12:40来源:亿速云阅读:118作者:Leah本篇文章为大家展示了如何在JAVA中使用MD5加密对密码进行加密,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.新建Md5.javapackage com.loger.md5;import java.io.Unsupporte...

weixin_36247139的博客 1082

java md5加密代码_java MD5加密实现代码

先从下面这张图对MD5加密实现进行了解,具体如下package com.pb;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Scanner;/** 验证MD5* ...

weixin_30043049的博客 1249

java中使用MD5进行加密

java中使用MD5进行加密 在各种应用系统的开发中,经常需要存储用户信息,很多地方都要存储用户密码,而将用户密码直接存储在服务器上显然是不安全的,本文简要介绍工作中常用的 MD5加密算法,希望能抛砖引玉。 (一)消息摘要简介 一个消息摘要就是一个数据块的数字指纹。即对一个任...

chuangmao7450的博客 554

md5加密 方法 java,java实现MD5加密的方法小结

搜索热词本文实例讲述了java实现MD5加密的方法。分享给大家供大家参考,具体如下:private String getMD5Str(String str) {MessageDigest messageDigest = null;try {messageDigest = MessageDigest.getInstance("MD5");messageDigest.reset();messageDi...

weixin_28803437的博客 261

MD5加密的使用-java的使用

MD5加密只能单向加密,不能解密。每次都是32位的结果 第一种:MD5Utils 推荐 public class MD5Utils { public static String getMD5_16bits(String str) { return getMD5_32bits(str).substring(8, 24); } public static String getMD5_3...

weixin_44038982的博客 260

bat md5加密字符串_JAVA开发中常用的四种加密方法

上一篇:这300G的Java资料是我师傅当年给我的,免费分享给大家来源:http://suo.im/4zqd5z作者:爱编程的浪子一、工具类md5加密工具类base64加密工具类Bcrypt工具类二、加密测试MD5加密测试base64加密测试SHA加密测试BCrypt加密测试一、工具类1. md5加密工具类package加密Tester.util;importjava.securit...

weixin_39765325的博客 334
上一篇: Java中获取不同时间段的各种不同类型时间格式的工具类
下一篇: Java中String类型与Date类型的相互转换
Monika、
博客等级 码龄7年 16粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Monika、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值