Java MD5校验
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校验的更多相关文章
- Java MD5校验与RSA加密
区别: MD5加密: 加密时通过原字符串加密成另一串字符串 解密时需要原加密字符串进行重新加密比较两次加密结果是否一致 RSA加密: 加密时通过原字符串生成密钥对(公钥+私钥) 解密时通过公钥和私钥进 ...
- Java 获取 文件md5校验码
讯雷下载的核心思想是校验文件的md5值,两个文件若md5相同则为同一文件. 当得到用户下载某个文件的请求后它根据数据库中保留的文件md5比对出拥有此文件的url, 将用户请求挂接到此url上并仿造一个 ...
- Java 自带MD5 校验文件
http://www.iteye.com/topic/1127319 前天第一次发表博客到论坛,关于Java文件监控一文,帖子地址在:http://www.iteye.com/topic/112728 ...
- java生成MD5校验码
在Java中,java.security.MessageDigest (rt.jar中)已经定义了 MD5 的计算,所以我们只需要简单地调用即可得到 MD5 的128 位整数.然后将此 128 位计 ...
- Java 读取网络资源文件 获取文件大小 MD5校验值
Java 读取网络资源文件 获取文件大小 MD5校验值 封装一个文件操作工具类: package c; import java.io.*; import java.net.HttpURLConnect ...
- JAVA生成文件的md5校验值
这里使用了lombok打印日志,也可以不用 import java.io.File; import java.io.FileInputStream; import java.io.IOExceptio ...
- Android MD5校验码的生成与算法实现
在Java中,java.security.MessageDigest (rt.jar中)已经定义了 MD5 的计算,所以我们只需要简单地调用即可得到 MD5 的128 位整数.然后将此 128 位计 ...
- js和java MD5加密
项目中用到js MD5加密和后台java MD5加密,刚开始加密后两个不一致,网上找了好久终于找到一个啦,记下来: md5.js /* * A JavaScript implementation of ...
- C# 获取文件MD5校验码
using System; using System.IO; using System.Security.Cryptography; using System.Text; public class M ...
随机推荐
- JS日期时间格式化
Date.prototype.Format = function (fmt) { //author: meizz var o = { "M+": this.getMonth() + ...
- webbrowser控件事件
Beforenavigate2: Fired before navigate occurs in the given WebBrowser(window or frameset element). T ...
- Linux下安装搜狗输入法
目前的搜狗输入法 for Linux 是Linux Deepin 社区版的测试版,基于Fcitx 框架. 话不多说,直接上. 准备工作:卸载Ubuntu默认的ibus输入法: sudo apt-get ...
- Eclipse插件Subclipse各版本插件下载地址以及与Subverison的对应关系
Subclipse 1.4.x includes and requires Subversion 1.5.x client features and working copy format. Subc ...
- Ubuntu 使用apt-get时提示错误:无法获得锁 /var/lib/dpkg/lock
推荐博客:http://blog.sina.com.cn/s/blog_5c1450a8010188ju.html Ubuntu 使用apt-get时提示错误:无法获得锁 /var/lib/dpkg/ ...
- java基础(二十一)IO流(四)
这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...
- bayer图像格式
Bayer数据,其一般格式为:奇数扫描行输出 RGRG……偶数扫描行输出 GBGB…… 根据人眼对彩色的响应带宽不高的大面积着色特点,每个像素没有必要同时输出3种颜色.因此,数据采样时, 奇数扫描行的 ...
- poj 2553 The Bottom of a Graph【强连通分量求汇点个数】
The Bottom of a Graph Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 9641 Accepted: ...
- hdoj 3665 Seaside【最短路】
Seaside Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- 高级IO复用应用:聊天室程序
简单的聊天室程序:客户端从标准输入输入数据后发送给服务端,服务端将用户发送来的数据转发给其它用户.这里采用IO复用poll技术.客户端采用了splice零拷贝.服务端采用了空间换时间(分配超大的用户数 ...