七、Java常用小知识之MD5加密

xiaoxiao2021-02-28  30

package com.imooc.util; import java.io.File; import java.io.FileInputStream; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import java.security.MessageDigest; /** * @author ** * @date 2018/6/9 10:05 */ public final class Md5Util { private static final char DIGITS[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; /** * 获取文件的MD5码 * * @param absPath * 文件路径 * @return 文件的MD5码 */ public static String getFileMD5(String absPath) { try { File file = new File(absPath); MessageDigest mdTemp = MessageDigest.getInstance("MD5"); FileInputStream fis = new FileInputStream(file); FileChannel filechannel = fis.getChannel(); MappedByteBuffer mbb = filechannel .map(FileChannel.MapMode.READ_ONLY, 0, file.length()); mdTemp.update(mbb); byte[] md = mdTemp.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++] = DIGITS[byte0 >>> 4 & 0xf]; str[k++] = DIGITS[byte0 & 0xf]; } fis.close(); return new String(str); } catch (Exception e) { return ""; } } /** * 获取指定字符串的MD5码 * * @param s 字符串 * @return 字符串的MD5码 */ public static String getMD5(String s) { return getMD5WithSalt(s, null); } /** * 根据盐值获取指定字符串的MD5码 * * @param s 字符串 * @return 字符串的MD5码 */ public static String getMD5WithSalt(String s, String salt) { char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; try { MessageDigest digest = MessageDigest.getInstance("MD5"); digest.update(addSalt(s, salt).getBytes()); byte[] md = digest.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) { return null; } } /** * 为加密对象撒盐(盐值加密) * @param object 待加密对象 * @param salt 盐(秘钥) * @return 撒盐后的结果 */ private static String addSalt(String object, String salt) { if(object == null){ object = ""; } if(salt == null || "".equals(salt)){ return object; } else { return object + "{"+ salt +"}"; } } }
转载请注明原文地址: https://www.6miu.com/read-2623776.html

最新回复(0)