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. HDU-2527 Safe Or Unsafe

    http://acm.hdu.edu.cn/showproblem.php?pid=2527 建哈夫曼树,哈夫曼编码,求wpl值. Safe Or Unsafe Time Limit: 2000/10 ...

  2. StringHelpers

    public class StringHelpers { public const char QUERY_STRING_DELIMITER = '&'; private static Rijn ...

  3. SVG事件响应

    1 UIEvents(用户界面事件)  focusin(onfocusin):一个元素获得焦点(例如,一段文本被选中)  focusout(onfocusout):一个元素失去焦点(例如,一段文本 ...

  4. Git push 时每次都需要密码的疑惑

    2015.1.13更新: 在本地搭建Git服务器时,也是有每次操作需要密码的情况. 是因为每次做推送动作时,Git需要认证你是好人.所以需要密码. 可以在 /home/username/.ssh/au ...

  5. java基础(十五)集合(二)

    这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...

  6. Android学习笔记(十四)方便实用的首选项-PreferenceActivity

    突然发现已经好多天没更新博客了,最近公司项目正在进行一个大跨度的重构,又碰上有新需求,一连好多天都是很晚才到家.其实这篇博文在草稿箱里面也存了很久了,本来想着不发了,不过感觉PreferenceAct ...

  7. linux debug (DOS模拟器,模拟debug)

    最近学习王爽那本<汇编语言>,但其实验均为windows环境,需要用到dos.但最为一个unixer,岂能在windows下开发?所以,要用linux下的工具. 汇编器masm可以用gcc ...

  8. PAT 1076. Forwards on Weibo (30)

    Weibo is known as the Chinese version of Twitter. One user on Weibo may have many followers, and may ...

  9. iOS/mac开发的一些知名个人博客

    王巍的博客:王巍目前在日本横滨任职于LINE.工作内容主要进行Unity3D开发,8小时之外经常进行iOS/Mac开发.他的陈列柜中已有多款应用,其中番茄工作法工具非常棒. http://onevca ...

  10. Expression Blend 4 激活码

    Expression Blend 4 激活码: 6WDDQ-K7D4F-GQGF4-2VYBJ-8K6MB