Java实现MD5加密_字符串加密_文件加密
2016-09-01 18:17
417 查看
Java实现MD5加密,具体代码如下:
转载请注明出处...
package com.bstek.tools; import java.io.FileInputStream; import java.io.IOException; import java.security.DigestInputStream; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * Md5 * 提供对字符串的md5-->stringMD5 * 提供对文件的Md5-->fileMD5 * * 对于大文件,可以使用DigestInputStream */ public class Md5Utils { 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) { System.err.println(Md5Utils.class.getName()+"初始化失败,MessageDigest不支持MD5Util."); e.printStackTrace(); } } 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); } private static String bufferToHex(byte bytes[]) { return bufferToHex(bytes, 0, bytes.length); } /** * 字符串的md5加密 * @param input * @return */ public static String stringMD5(String input) { // 输入的字符串转换成字节数组 byte[] inputByteArray = input.getBytes(); // inputByteArray是输入字符串转换得到的字节数组 messageDigest.update(inputByteArray); // 转换并返回结果,也是字节数组,包含16个元素 byte[] resultByteArray = messageDigest.digest(); // 字符数组转换成字符串返回 return bufferToHex(resultByteArray); } /** * 文件的md5加密 * @param inputFile * @return * @throws IOException */ public static String fileMD5(String inputFile) throws IOException { // 缓冲区大小(这个可以抽出一个参数) int bufferSize = 256 * 1024; FileInputStream fileInputStream = null; DigestInputStream digestInputStream = null; try { // 使用DigestInputStream fileInputStream = new FileInputStream(inputFile); digestInputStream = new DigestInputStream(fileInputStream,messageDigest); // read的过程中进行MD5处理,直到读完文件 byte[] buffer =new byte[bufferSize]; while (digestInputStream.read(buffer) > 0); // 获取最终的MessageDigest messageDigest= digestInputStream.getMessageDigest(); // 拿到结果,也是字节数组,包含16个元素 byte[] resultByteArray = messageDigest.digest(); // 同样,把字节数组转换成字符串 return bufferToHex(resultByteArray); } finally { try { digestInputStream.close(); } catch (Exception e) { } try { fileInputStream.close(); } catch (Exception e) { } } } /** * @param args */ public static void main(String[] args) { //测试字符串MD5加密 //123456: e10adc3949ba59abbe56e057f20f883e //eastcom: 6997c46956185a7c4d452646fc9c69e2 System.out.println(stringMD5("eastcom")); try { long startTime = System.currentTimeMillis(); //测试文件MD5加密 String FilePath = "D:/ilink_ide.zip"; //4227e9fc4bd71ff34887d47867967b29 System.out.println(fileMD5(FilePath)); long endTime = System.currentTimeMillis(); System.out.println((endTime - startTime)/1000); } catch (IOException e) { e.printStackTrace(); } } /** * 参考文章: * http://www.zhihu.com/question/23702510 * http://blog.csdn.net/lf_software_studio/article/details/8025497 * http://my.oschina.net/laigous/blog/106646 * http://blog.csdn.net/wangqiuyun/article/details/22941433 */ }
转载请注明出处...
相关文章推荐
- 使用java自带des加密算法实现文件加密和字符串加密
- 使用java自带des加密算法实现文件加密和字符串加密
- java实现文件压缩并加密-基于zip4j
- java实现简单的异或操作(用于文件简单加密)
- java 实现文件内容的加密和解密
- 基于公私钥文件的RSA非对称加密的Java端实现
- JAVA实现文件AES加密或MD5验证
- java处理加密文件---实现RSA算法
- java实现字符串加密,登录密码加密
- Java实现MD5加密和文件校验
- java代码实现加密压缩文件解压
- java实现文件压缩并加密-基于zip4j
- Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密
- java处理加密文件---实现RSA算法
- Java实现文件MD5加密
- Java实现MD5加密和文件校验
- Java实现DESede(双重DES)对文件加密
- java处理加密文件---实现RSA算法
- java代码实现对文件的base64加密解密
- Java实现批量文件加密