MD5文件加解密工具类


import lombok.extern.slf4j.Slf4j;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;/*** @Description: MD5 加密工具类* @Author: 云诺* @Date: 2020/12/31 11:57*/
@Slf4j
public class MD5Utils {/*** 16位 原加密密文*/protected static char[] HEXDIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};/*** 摘要密文*/protected static MessageDigest MESSAGEDIGEST = null;static {try {// 拿到一个MD5转换器(如果想要SHA1参数换成”SHA1”)MESSAGEDIGEST = MessageDigest.getInstance("MD5");} catch (NoSuchAlgorithmException e) {log.error(MD5Utils.class.getName() + "初始化失败,MessageDigest不支持MD5Util.");}}private static String bufferToHex(byte[] bytes) {return bufferToHex(bytes, 0, bytes.length);}private static String bufferToHex(byte[] bytes, int m, int n) {StringBuffer stringbuffer = new StringBuffer(2 * n);int k = m + n;for (int l = m; l < k; l++) {appendHexPair(bytes[l], stringbuffer);}return stringbuffer.toString();}private static void appendHexPair(byte bt, StringBuffer stringbuffer) {char c0 = HEXDIGITS[(bt & 0xf0) >> 4];char c1 = HEXDIGITS[bt & 0xf];stringbuffer.append(c0);stringbuffer.append(c1);}/*** 字符串的md5加密** @param input 需要加密的字符串* @return 字符串加密MD5密钥*/public static String string2MD5(String input) {try {// 输入的字符串转换成字节数组byte[] inputByteArray = input.getBytes();MESSAGEDIGEST.update(inputByteArray);// 转换并返回结果byte[] resultByteArray = MESSAGEDIGEST.digest();// 字符数组转换成字符串return bufferToHex(resultByteArray);} catch (Exception e) {//字符串加密失败log.error("字符串MD5加密失败" + e + e.getMessage());return "";}}/*** 文件的md5加密** @param inputFile 需要加密的文件* @return 文件加密MD5密钥* @throws IOException*/public static String file2MD5(File inputFile) throws IOException {// 缓冲区大小int bufferSize = 256 * 1024;// 文件流FileInputStream fileInputStream = null;// 摘要流DigestInputStream digestInputStream = null;try {// 使用DigestInputStreamfileInputStream = new FileInputStream(inputFile);digestInputStream = new DigestInputStream(fileInputStream, MESSAGEDIGEST);// read的过程中进行MD5处理,直到读完文件byte[] buffer = new byte[bufferSize];while (digestInputStream.read(buffer) > 0) {;}// 获取最终的MessageDigestMESSAGEDIGEST = digestInputStream.getMessageDigest();// 拿到结果,也是字节数组,包含16个元素byte[] resultByteArray = MESSAGEDIGEST.digest();// 把字节数组转换成字符串return bufferToHex(resultByteArray);} catch (Exception e) {log.error("文件的md5加密失败" + e + e.getMessage());return "";} finally {try {digestInputStream.close();} catch (Exception e) {log.error("文件的md5加密-关闭流失败" + e + e.getMessage());}}}
}

MD5文件加解密工具类 MD5Utils相关推荐

  1. Java各种方式加解密工具类

    文章目录 前言 1.AES 2.DES 3.BCrypt 4.Http Basic 5.MD5 6.RSA 7.SHA256 8.SM3 9.SM4 前言 JAVA能够实现各种加解密方式,这里对各种加 ...

  2. RSA加解密工具类(PKCS8公钥加密,PKCS1私钥解密)

    场景:如果项目上生成的秘钥,公钥是PKCS8格式,私钥却是PKCS1格式.需要在这种场景加解密的话可以直接使用下面工具类. 依赖 <dependency><groupId>or ...

  3. rsa java ao_RSA加解密工具类

    Java 实现 import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairG ...

  4. java aes 工具类_Java中的AES加解密工具类:AESUtils

    本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysConsta ...

  5. 阿里云专属KMS信封加解密工具类

    此工具类主要实现,字符串的加密,输出为Base64编码的字符串.字符串的解密,输入为Base64编码的字符串.工具类里的IV向量参数,需要用户自己保存,工具类中是默认写死在代码中的,并不规范.IV向量 ...

  6. 国密算法-SM4加解密工具类

    import cn.hutool.crypto.symmetric.SymmetricCrypto;/*** @author : chenfan* @className : SM4Utils* @da ...

  7. Java中的RSA加解密工具类:RSAUtils

    本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt;import com.mirana.frame.utils.log.LogUtils; ...

  8. AES-128加解密工具类

    Java实现AES加密.解密 import org.apache.commons.codec.binary.Base64;import javax.crypto.Cipher; import java ...

  9. Java 加解密工具类

    一.对称加密算法  加密和解密使用相同密钥的加密算法.常用的算法包括DES.3DES.AES.DESX.Blowfish.RC4.RC5.RC6. DES(Data Encryption Standa ...

  10. SpringBoot 文件上传 基于MD5 文件内容校验工具类

    1.业务场景:实现文件上传功能时.我们需要校验上传文件在传输过程中是否被注入脚本或者是被修改,所有采用md5 算法+ 文件内容生成一个识别码,传递给后端,让后端判断文件是否发生修改或变更. impor ...

最新文章

  1. 39个超实用jQuery实例应用特效
  2. 用 GStreamer 简化 Linux 多媒体开发
  3. 8086CPU的出栈(pop)和入栈(push) 都是以字为单位进行的
  4. JavaScript知识点总结
  5. 利用银行家算法避免死锁(C++实现)
  6. 在 Linux 中使用动态磁盘
  7. 2018-2019-1 20165219 实验三 实时系统
  8. 2021年宝鸡中学高考成绩查询,宝鸡中学排名前十名,2021年宝鸡中学排名一览表
  9. mysql5.7无法启动问题
  10. oracle备份与恢复 exp,Oracle数据库备份与恢复之一:exp/imp(导出与导入装库与卸库)...
  11. 如何把proe的工作目录怎么设置在服务器上的唯一方法
  12. 图嵌入表示TADW:当DeepWalk加上外部文本信息
  13. 2021-08-3126. 删除有序数组中的重复项 数组
  14. c4d导出obj格式有破面_c4d导出obj格式错误怎么办 c4d导出obj格式教程
  15. 中文域名,网站,启用,弘勇,xn--2gr99z.xn--fiqs8s,网址,中国,
  16. 曾经的小弟, 成了现在的大牛
  17. 一文带你明白什么是浏览器插件?
  18. 「 WEB测试工程师 」岗位一面总结
  19. 如何用matlab演奏《偏爱》
  20. java中接口可不可以继承一般类,为什么?

热门文章

  1. java实现时间轮定时器_基于侵入式链表的时间轮定时器实现
  2. widnows下lua开发环境luadist LuaRocks搭建
  3. python删除word表格中的某一行_python-docx添加和删除表格行、列
  4. 一文读懂AlphaGo Zero算法
  5. matlab模拟方孔衍射,基于MATLAB的圆孔衍射实验模拟.pdf
  6. 电脑主板故障维修案例
  7. 用粉红噪声煲机_煲机知识 | 煲机常用的粉红噪音和白噪音是什么?
  8. “科创”开局之年,AI创业的机遇与挑战
  9. catia相合约束怎么反向_洛丽塔服饰怎么画?教你如何画动漫人物的衣服?
  10. U盘写保护,量产工具修复。