1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > MD5文件加解密工具类 MD5Utils

MD5文件加解密工具类 MD5Utils

时间:2019-03-24 01:03:41

相关推荐

MD5文件加解密工具类 MD5Utils

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: /12/31 11:57*/@Slf4jpublic 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());}}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。