Java 生成文件MD5算法
来源:互联网 发布:淘宝女装英文店名 编辑:程序博客网 时间:2024/05/29 09:05
代码:
import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class MD5Util {private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5","6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }; private static ThreadLocal<MessageDigest> MD5 = new ThreadLocal<MessageDigest>() { @Override protected MessageDigest initialValue() { try { return MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { throw new IllegalStateException("no md5 algorythm found"); } } }; public static String byteArrayToHexString(byte[] b) {StringBuffer resultSb = new StringBuffer();for (int i = 0; i < b.length; i++) {resultSb.append(byteToHexString(b[i], true));}return resultSb.toString();}public static String byteArrayToHexStringLittleEnding(byte[] b) {StringBuffer resultSb = new StringBuffer();for (int i = 0; i < b.length; i++) {resultSb.append(byteToHexString(b[i], false));}return resultSb.toString();}private static String byteToHexString(byte b, boolean bigEnding) {int n = b;if (n < 0)n = 256 + n;int d1 = n / 16;int d2 = n % 16;return (bigEnding)?(hexDigits[d1] + hexDigits[d2]):(hexDigits[d2] + hexDigits[d1]);}public static String MD5Encode(String origin) {return MD5Encode(origin, null);}/** * 把16进制字符串转换为byte数组 * @param s * @return */public static byte[] hexStringToByteArray(String s){if(s.length()%2 != 0){throw new RuntimeException("Error Hex String length");}byte[] result = new byte[s.length()/2];for(int i=0; i<s.length();){int bytepos = i/2;char c = s.charAt(i++);char c2 = s.charAt(i++);result[bytepos] = Integer.decode("0x"+c+c2).byteValue();}return result;}/** * MD5摘要 * @param origin 摘要原文 * @param encoding 字符串origin 的编码 * @return */public static String MD5Encode(String origin, String encoding) {String resultString = null;try {resultString = new String(origin);MessageDigest md = MD5.get();if (encoding == null) {resultString = byteArrayToHexString(md.digest(resultString.getBytes()));} else {resultString = byteArrayToHexString(md.digest(resultString.getBytes(encoding)));}} catch (Exception e) {throw new RuntimeException(e);}return resultString;}public static MessageDigest getMd5Digest(){ return MD5.get();}public static byte[] MD5Encode(byte origin[]) {try {MessageDigest md = MD5.get();return md.digest(origin);} catch (Exception e) {throw new RuntimeException(e);}}}
0 0
- Java 生成文件MD5算法
- Java生成MD5算法
- Java生成MD5算法
- Java生成MD5算法
- java快速生成大文件的MD5算法[MD5Util.java]
- java生成MD5校验码及算法实现
- java生成MD5校验码及算法实现
- java生成MD5校验码及算法实现
- java生成MD5校验码及算法实现
- Java生成MD5校验码及算法实现
- java生成MD5校验码及算法实现
- java生成MD5校验码及算法实现
- java生成MD5校验码及算法实现
- MD5文件校验码生成java代码
- java生成MD5校验码(文件/字符串)
- java 图片文件生成MD5值
- 文件生成MD5 收藏
- MD5 生成文件校验
- Java.io之文件
- Windows socket之WSAEventSelect模型
- 面试题:HashMap HashTable ConcurrentHashMap区别
- 我的回忆
- apache mina
- Java 生成文件MD5算法
- 一般图匹配带花树
- syntax error near unexpected token `then'问题的解决
- 学习
- Storm运行出现Client is being closed, and does not take requests any more引起的Netty故障跟踪
- oschina安卓源代码解析(四)构造新闻实体类
- Handler引起的内存泄露(Activity中Handler的正确使用方法)
- 内存管理和内存池(转载两篇博客)
- 在LaTeX里插入全页的pdf