Java计算字符串和文件的MD5与SHA1
2014-12-08 15:24
435 查看
package net.hkh.util; import java.io.FileInputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.DigestInputStream; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Utils { @SuppressWarnings("unused") private static final String md5 = "MD5"; @SuppressWarnings("unused") private static final String sha1 = "SHA-1"; /** * @desc 计算字符串的md5 or sha1 * @param str * @param lx,md5 * or sha1 * @return * @throws UnsupportedEncodingException * */ public static String md5OrSha1OfString(String str, String lx) throws UnsupportedEncodingException { try { MessageDigest md = MessageDigest.getInstance(lx); byte[] inputByteArr = str.getBytes("UTF-8"); md.update(inputByteArr); byte[] rsByteArr = md.digest(); return byteArrayToHex(rsByteArr); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return null; } } /** * @desc 计算文件的md5 or sha1 * @param inputFile * @param lx,md5 * or sha1 * @return * @throws IOException * */ @SuppressWarnings("finally") public static String md5OrSha1OfFile(String inputFile, String lx) throws IOException { int bufferSize = 256 * 1024; FileInputStream fis = null; DigestInputStream dis = null; String rslt = null; try { MessageDigest md = MessageDigest.getInstance(lx); fis = new FileInputStream(inputFile); dis = new DigestInputStream(fis, md); byte[] buffer = new byte[bufferSize]; while (dis.read(buffer) > 0) { md = dis.getMessageDigest(); byte[] arr = md.digest(); rslt = byteArrayToHex(arr); } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); rslt = null; } finally { try { dis.close(); } catch (Exception e) { e.printStackTrace(); } dis = null; try { fis.close(); } catch (Exception e) { e.printStackTrace(); } fis = null; return rslt; } } /** * @desc 将生成的字节数组转化为十六进制字符串 * @param arr * @return * */ public static String byteArrayToHex(byte[] arr) { String hexStr = "0123456789ABCDEF"; StringBuilder rslt = new StringBuilder(); for (int i = 0; i < arr.length; i++) { rslt.append(String.valueOf(hexStr.charAt((arr[i] & 0xf0) >> 4))); rslt.append(String.valueOf(hexStr.charAt(arr[i] & 0x0f))); } return rslt.toString(); } }
相关文章推荐
- java 实现字符串以及文件的md5、sha计算完整代码
- JAVA计算文件的MD5及SHA1等值
- Java的字符串md5加密和文件md5
- 一个可以计算字符串和文件的MD5的类
- Java利用MessageDigest获取字符串或文件MD5详解
- 计算字符串的MD5值和MD5文件摘要
- 加密:Java利用MessageDigest获取字符串或文件MD5详解
- java 文件md5+字符串md5 实现
- C# 计算字符串/文件的哈希值(MD5、SHA)
- java获取大文件的MD5、SHA1,CRC32码
- 使用开源代码CSHA1 - A,计算文件和字符串SHA1
- java读取文件以字节流的形式读取 然后转化为字节流数组,最后经过SHA1加密生成返回16进制字符串存入数据库
- java计算过G文件md5 值计算
- 字符串以及文件的hashlib的md5和sha1等的运用
- Java用字符串生成的md5,sha1作为数据库主键, 去重
- java中类似php md5的算法,可以取得文件,字符串和输入流的md5值
- 用java计算文件MD5(文件hash)
- Android开发--身高体重指数(BIM)计算--访问标识符号(android:id属性/XML说明文件与R.java资源文件/将字符串抽离XML/新增XML文件)
- Java利用MessageDigest获取字符串或文件MD5详解
- Java利用MessageDigest获取字符串或文件MD5详解