【随笔】MD5加密字符串、文件apache、springframework实现

文章目录

  • 一、引入依赖
  • 二、工具代码
  • 三、测试代码
  • 四、输出结果

一、引入依赖

commons-codec

<dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.13</version>
</dependency>

二、工具代码

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;import org.apache.commons.codec.Charsets;
import org.apache.commons.codec.digest.DigestUtils;public class MD5Utils
{/*** MD5加密之方法一* * @explain 借助apache工具类DigestUtils实现* @param str 待加密字符串* @return 16进制加密字符串*/public static String encryptToMD5(String str){return DigestUtils.md5Hex(str);}/*** MD5加密之方法一* * @explain 借助apache工具类DigestUtils实现* @param file 待加密文件* @return 16进制加密字符串* @throws IOException*/public static String encryptToMD5(File file)throws IOException{try (InputStream fis = new FileInputStream(file)){return DigestUtils.md5Hex(fis);}}/*** MD5加密之方法二* * @explain spring实现* @param str 待加密字符串* @return 16进制加密字符串*/public static String encrypt2ToMD5(String str){return org.springframework.util.DigestUtils.md5DigestAsHex(str.getBytes(Charsets.UTF_8));}/*** MD5加密之方法二* * @explain spring实现* @param file 待加密文件* @return 16进制加密字符串* @throws IOException*/public static String encrypt2ToMD5(File file)throws IOException{try (InputStream fis = new FileInputStream(file)){return org.springframework.util.DigestUtils.md5DigestAsHex(fis);}}
}

三、测试代码


import java.io.IOException;import org.junit.jupiter.api.Test;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;import lombok.extern.slf4j.Slf4j;@Slf4j
public class MD5UtilsTest
{@Testpublic void test()throws IOException{// 字符串MD5String str = "Marydon";String md51 = MD5Utils.encryptToMD5(str);String md52 = MD5Utils.encrypt2ToMD5(str);log.info("MD5加密方法一:{}", md51);log.info("MD5加密方法二:{}", md52);// 文件MD5Resource resource = new ClassPathResource("data/pic/001.jpg");md51 = MD5Utils.encryptToMD5(resource.getFile());md52 = MD5Utils.encrypt2ToMD5(resource.getFile());log.info("MD5加密方法一:{}", md51);log.info("MD5加密方法二:{}", md52);}
}

四、输出结果

2023-12-21 17:24:47.993  INFO 35664 --- [           main] c.f.c.u.MD5UtilsTest                     : MD5加密方法一:988218e7eefcd86d5d855a8947f37f43
2023-12-21 17:24:48.000  INFO 35664 --- [           main] c.f.c.u.MD5UtilsTest                     : MD5加密方法二:988218e7eefcd86d5d855a8947f37f43
2023-12-21 17:24:48.019  INFO 35664 --- [           main] c.f.c.u.MD5UtilsTest                     : MD5加密方法一:fcae27bef5b129270a72a7f75f9a252e
2023-12-21 17:24:48.019  INFO 35664 --- [           main] c.f.c.u.MD5UtilsTest                     : MD5加密方法二:fcae27bef5b129270a72a7f75f9a252e

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/240294.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++进阶-继承

继承 一、继承的概念及定义1.1 继承的概念1.2 继承的定义1.2.1 定义格式1.2.2 继承关系和访问限定符1.2.3 继承基类成员访问方式的变化 二、基类和派生类对象赋值转换三、继承中的作用域3.1 同名成员变量3.2 同名成员函数 四、派生类的默认成员函数五、继承与友元六、继承与静态…

Leetcode—43.字符串相乘【中等】

2023每日刷题&#xff08;六十八&#xff09; Leetcode—43.字符串相乘 算法思想 实现代码 class Solution { public:string multiply(string num1, string num2) {int len1 num1.size(), len2 num2.size();string ans;int end1 len1 - 1, end2 len2 - 1;int arr[len1 l…

[RK-Linux] RK3399支持M.2 NVMe SSD启动

延续《[RK-Linux] 从主线U-Boot移植PCIe及其PHY驱动到RK3399 U-Boot》 启动流程: maskrom -> loader(从 eMMC 存储器加载) -> u-boot(从 eMMC 存储器加载)-> kernel (从 M.2 NVMe SSD 加载)-> rootfs (从 M.2 NVMe SSD 挂载)配置从 M.2 NVMe SSD 启动: …

centos7 nginx搭建本地yum仓库

安装依赖 yum -y install yum-utils createrepo创建本地存储目录 mkdir /data/mirror同步extras、updates、base、epel仓库到/data/mirror目录 reposync -n --repoidextras --repoidupdates --repoidbase --repoidepel -p /data/mirror创建仓库索引 createrepo -po /data/mirro…

vue3 常用函数\\组件传值\\抽离封装

一、简介 组合式api 1、 setup&#xff08;&#xff09; 组合式api的入口页面启动后&#xff0c;第一个自动执行的函数定义项目中所有的变量、方法所有的变量和方法&#xff0c;只有return出去&#xff0c;在页面视图中正常使用<template><!-- v-text的简写-->…

、写入Shellcode到注册表上线

其实本质就是将shellcode写入到注册表中&#xff0c;然后读取注册表中的shellcode&#xff0c;然后创建线程去执行shellcode。 如下图: 写入注册表shellcode 这里将shellcode写入到注册表中&#xff0c;在我们需要的时候再去读取然后执行。 这里用到如下两个Windows API函…

福FLUKE禄克8808A数字多用表

福禄克8808A&#xff0c;用于制造、研发、维修等应用的多功能数字表&#xff0c;FLUKE 8808A 5.5位数字多用表可以完成当今众多常用的测量工作。无论是功能测 展开 福禄克8808A&#xff0c;用于制造、研发、维修等应用的多功能数字表&#xff0c;FLUKE 8808A 5.5位数字多用表可…

【音视频】remb twcc原理

目录 twcc简介 WebRTC REMB 参考文档 twcc简介 TWCC全称是Transport wide Congestion Control&#xff0c;是webrtc的最新的拥塞控制算法。其原理是在接收端保存数据包状态&#xff0c;然后构造RTCP包反馈给发送端&#xff0c;反馈信息包括包到达时间、丢包状态等&#xff…

室内导航技术在智慧医疗的革新应用

随着科技的飞速发展&#xff0c;智慧医疗已经成为现代医疗服务的重要组成部分。在这个背景下&#xff0c;室内导航技术逐渐崭露头角&#xff0c;为智慧医疗建设带来了革命性的改变。本文将深入探讨室内导航技术在智慧医疗中的应用&#xff0c;并分析其为医疗服务带来的诸多便利…

vue:ref的作用和实例

定义&#xff1a;用来获取元素或子组件注册或者引用信息&#xff0c;父组件通过$ref获取到相应的DOM对象和子组件 1、vue中ref的作用 获取页面的DOM元素获取子组件的对象&#xff08;也是一种通信方式&#xff09; 2、实例 1、获取DOM&#xff0c;首先创建一个父页面index然…

如何自定义右键弹框并实现位置自适应?

一、问题 右键显示弹框&#xff0c;但是靠近浏览器边缘的部分会被隐藏&#xff0c;需要实现弹框位置自适应 二、 问题分析 如果想要最终弹框的宽高不超过屏幕视口&#xff0c;就等于屏幕视口的总宽/高减去弹框打开时的起点坐标&#xff0c;剩下的部分大于等于弹框的宽/高&…

商家如何进行商业模式开发,助力产品更好的销售模式?

商家如何进行商业模式开发&#xff0c;助力产品更好的销售模式&#xff1f; 随着各类电商平台的疯狂崛起&#xff0c;越来越多的商家对其中带来的高额回报率产生心动&#xff0c;毕竟对于线上的场景来说&#xff0c;即省去了房租、水电、仓储以及其他各种费用&#xff0c;用电商…

vue3 + TypeScript使用国际化

vue3 TypeScript使用国际化 本文使用了 Vite 构建工具创建的vue3项目Vite 支持使用特殊的 import.meta.glob 函数从文件系统导入多个模块Vite 官方中文文档当然如果你的vue3项目未使用vite,你也可以为你的旧项目提提速&#xff0c;安装vite &#xff0c;安装方法在上一个博客…

【华为数据之道学习笔记】6-5数据地图的核心价值

数据供应者与消费者之间往往存在一种矛盾&#xff1a;供应者做了大量的数据治理工作、提供了大量的数据&#xff0c;但数据消费者却仍然不满意&#xff0c;他们始终认为在使用数据之前存在两个重大困难。 1&#xff09;找数难 企业的数据分散存储在上千个数据库、上百万张物理表…

汽车行业一些知识

一、汽车术语集合 1、 轴距(mm)&#xff1a;汽车前轴中心至后轴中心的距离。 2、转弯半径(mm)&#xff1a;汽车转向时&#xff0c;汽车外侧转向轮的中心平面在车辆支撑平面上的轨迹圆半径。转向盘转到极限位置时的转弯半径为最小转弯半径。 3、最大总质量(kg)&#xff1a;汽…

C# Assembly(加载反射)获取对象属性及执行

参考官网&#xff1a;Assembly 类 (System.Reflection) | Microsoft Learn 使用类&#xff1a;Assembly 命名空间&#xff1a;System.Reflection Type类中包含Assembly typeof(Serilog日志保存).Assembly.GetExportedTypes(); Assembly加载反射 Assembly.GetExportedType…

springboot(ssm老年一站式服务平台 老人服务系统Java系统

springboot(ssm老年一站式服务平台 老人服务系统Java系统 开发语言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#xff08;或8.0&#xff09; …

动态数组的实现

定义 1. 在计算机科学中&#xff0c;数组是由一组元素&#xff08;值或变量&#xff09;组成的数据结构&#xff0c;每个元素有至少一个索引或键来标识。 2. 因为数组内的元素是连续存储的&#xff0c;所以数组中元素的地址&#xff0c;可以通过其索引计算出来。 3. 知道了数…

计算机网络-网络层

计算机网络-网络层 以下笔记整理为哔哩哔哩湖科大教书匠的《计算机网络微课堂》的教学视频。 链接&#xff1a;计算机网络微课堂 1. 网络层概述 1.1 网络层的主要任务是实现网络互联&#xff0c;进而实现数据包在各网络之间的传输。 1.2 要实现网络层任务&#xff0c;需要解决…

【飞凌 OK113i-C 全志T113-i开发板】一些有用的常用的命令测试

一些有用的常用的命令测试 一、系统信息查询 可以查询板子的内核信息、CPU处理器信息、环境变量等 二、CPU频率 从上面的系统信息查询到&#xff0c;这是一颗具有两个ARMv7结构A7内核的处理器&#xff0c;主频最高1.2GHz 可以通过命令查看当前支持的频率以及目前所使用主频 …