Java 生成MD5

MD5(Message Digest Algorithm),消息摘要算法,一般用于校验文件的完整性。Java内置已经实现了MD5,与SHA1算法,利用java.security.MessageDigest类就可以获取文件/字符串的MD5或SHA1

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; public class MD5AndSHA1Helper { /**
* 将字节数组转换为16进制字符串
* @param resultArr
* @return 16进制字符串
*/
private static String byteArrToHex(byte[] byteArr) {
// Initialize the character array, used to store each hexadecimal string
char[] hexDigits = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
// Initialize a char Array, used to form the result string
char[] resultCharArr = new char[byteArr.length*2];
// Traverse the byte array, converted into characters in a character array
int index = 0;
for (byte b : byteArr) {
resultCharArr[index++] = hexDigits[b>>> 4 & 0xf];
resultCharArr[index++] = hexDigits[b & 0xf];
}
return new String(resultCharArr);
} /**
* 获取字符串的MD5
* @param input
* @return
*/
public static String getStringMD5(String input){
try {
// get MD5 digest
MessageDigest mDigest = MessageDigest.getInstance("MD5");
// The input String to Byte Array
byte[] inputArr = input.getBytes();
// Updates the digest using the specified byte.
mDigest.update(inputArr);
// Completes the hash computation by performing final operations such as padding.
// The digest is reset after this call is made.
byte[] resultArr = mDigest.digest();
//
return byteArrToHex(resultArr);
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
} /**
* 获取文件的MD5,可以替换为SHA1
* @param inputFile
* @return
* @throws IOException
*/
@SuppressWarnings("resource")
public static String getFileMD5(String fileUrl) throws IOException{
int bufferSize = 1024*1024;
FileInputStream fileInputStream = null;
DigestInputStream digestInputStream = null;
try {
// 可以替换为"SHA1"
MessageDigest mDigest = MessageDigest.getInstance("MD5");
fileInputStream = new FileInputStream(fileUrl);
// Creates a digest input stream, using the specified input stream and message digest.
digestInputStream = new DigestInputStream(fileInputStream, mDigest);
byte[] buffer = new byte[bufferSize];
while(digestInputStream.read(buffer)>0);
mDigest = digestInputStream.getMessageDigest();
byte[] resultArr = mDigest.digest();
return byteArrToHex(resultArr);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}finally{
fileInputStream.close();
digestInputStream.close();
}
return null;
} /**
* 获取String的SHA1
* @param input
* @return
*/
public static String getStringSHA1(String input){
try {
MessageDigest mDigest = MessageDigest.getInstance("SHA1");
byte[] inputArr = input.getBytes();
mDigest.update(inputArr);
byte[] resultArr = mDigest.digest();
return byteArrToHex(resultArr); } catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
} public static void main(String[] args) {
// String result = MD5AndSHA1Helper.getStringMD5("111");
// String result = MD5AndSHA1Helper.getStringSHA1("1111");
String path = "/Users/Dream_Kidd/Downloads/wanda19environment-x64/apache-tomcat-7.0.62-windows-x64.zip";
String result;
try {
result = MD5AndSHA1Helper.getFileMD5(path);
System.out.println(result);
} catch (IOException e) {
e.printStackTrace();
} }
}

建议,如果过G的文件,不建议使用Java自带的MD5

Java MD5校验的更多相关文章

  1. Java MD5校验与RSA加密

    区别: MD5加密: 加密时通过原字符串加密成另一串字符串 解密时需要原加密字符串进行重新加密比较两次加密结果是否一致 RSA加密: 加密时通过原字符串生成密钥对(公钥+私钥) 解密时通过公钥和私钥进 ...

  2. Java 获取 文件md5校验码

    讯雷下载的核心思想是校验文件的md5值,两个文件若md5相同则为同一文件. 当得到用户下载某个文件的请求后它根据数据库中保留的文件md5比对出拥有此文件的url, 将用户请求挂接到此url上并仿造一个 ...

  3. Java 自带MD5 校验文件

    http://www.iteye.com/topic/1127319 前天第一次发表博客到论坛,关于Java文件监控一文,帖子地址在:http://www.iteye.com/topic/112728 ...

  4. java生成MD5校验码

    在Java中,java.security.MessageDigest (rt.jar中)已经定义了 MD5 的计算,所以我们只需要简单地调用即可得到 MD5 的128 位整数.然后将此 128 位计 ...

  5. Java 读取网络资源文件 获取文件大小 MD5校验值

    Java 读取网络资源文件 获取文件大小 MD5校验值 封装一个文件操作工具类: package c; import java.io.*; import java.net.HttpURLConnect ...

  6. JAVA生成文件的md5校验值

    这里使用了lombok打印日志,也可以不用 import java.io.File; import java.io.FileInputStream; import java.io.IOExceptio ...

  7. Android MD5校验码的生成与算法实现

    在Java中,java.security.MessageDigest (rt.jar中)已经定义了 MD5 的计算,所以我们只需要简单地调用即可得到 MD5 的128 位整数.然后将此 128 位计 ...

  8. js和java MD5加密

    项目中用到js MD5加密和后台java MD5加密,刚开始加密后两个不一致,网上找了好久终于找到一个啦,记下来: md5.js /* * A JavaScript implementation of ...

  9. C# 获取文件MD5校验码

    using System; using System.IO; using System.Security.Cryptography; using System.Text; public class M ...

随机推荐

  1. Maven学习一:用Maven创建Java Project

    转自:http://blog.csdn.net/lfsfxy9/article/details/9399093  Maven环境配置只是入门的基础,现在要通过Maven基本命令生成一个Java Pro ...

  2. Oracle 视图添加主键

    在Entity Framework中,从数据库生成模型,视图常报无主键. 解决办法:为试图添加主键/复合主键 create or replace view view_activebudgetamoun ...

  3. Bzoj 3505: [Cqoi2014]数三角形 数论

    3505: [Cqoi2014]数三角形 Time Limits: 1000 ms  Memory Limits: 524288 KB  Detailed Limits   Description

  4. Windows 8.1中怎么启用Framework3.5或2.0 ( 一安装就跳到下载 Win8.1自带了Framework)

    Windows 8.1中怎么启用Framework3.5或2.0      ( 一安装就跳到下载 Win8.1自带了Framework): Win+X键 打开   开始菜单 -> 命令提示符(管 ...

  5. h264码流分析及其工具

    总的来说H264的码流的打包方式有两种,一种为annex-b byte stream format的格式,这个是绝大部分编码器的默认输出格式,就是每个帧的开头的3~4个字节是H264的start_co ...

  6. 《神经网络和深度学习》系列文章三:sigmoid神经元

    出处: Michael Nielsen的<Neural Network and Deep Leraning>,点击末尾“阅读原文”即可查看英文原文. 本节译者:哈工大SCIR硕士生 徐伟 ...

  7. In Java, what is the default location for newly created files?

    If the current directory of the application. If e.g. you create a File by using new FileOutputStream ...

  8. Android开发艺术探索(三)——View的事件体系

    一.View基础知识 主要介绍内容有:View的位置参数.MotionEvent和TouchSlope对象.VelocityTracker.GestureDetector和Scroller对象 1.什 ...

  9. ASP.NET多线程下使用HttpContext.Current为null解决方案

    多线程或者异步调用中如何访问HttpContext? 前面我还提到在APM模式下的异步完成回调时,访问HttpContext.Current也会返回null,那么此时该怎么办呢? 答案有二种:1. 在 ...

  10. C# 可访问一致性不一致

    出现原因,其中一个是返回参数的访问级别小于函数的访问级别, 也就是说当定义一个返回参数的方法的时候,如果返回参数的访问级别低于方法的访问级别就会出现这样的错误,这个是可以理解的,如果返回的参数不能被访 ...