原文链接:http://blog.csdn.net/mylmhcj/article/details/50616908
import org.apache.commons.codec.digest.DigestUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.zip.CRC32;
public class FileSafeCode {
/**
* 计算大文件 md5获取getMD5(); SHA1获取getSha1() CRC32获取 getCRC32()
*/
protected static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6',
'7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
public static MessageDigest messagedigest = null;
/**
* 对一个文件获取md5值
*
* @return md5串
* @throws NoSuchAlgorithmException
*/
public static String getMD5(File file) throws IOException,
NoSuchAlgorithmException {
messagedigest = MessageDigest.getInstance("MD5");
FileInputStream in = new FileInputStream(file);
FileChannel ch = in.getChannel();
MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0,
file.length());
messagedigest.update(byteBuffer);
return bufferToHex(messagedigest.digest());
}
/**
* @param target 字符串 求一个字符串的md5值
* @return md5 value
*/
public static String StringMD5(String target) {
return DigestUtils.md5Hex(target);
}
/***
* 计算SHA1码
*
* @return String 适用于上G大的文件
* @throws NoSuchAlgorithmException
* */
public static String getSha1(File file) throws OutOfMemoryError,
IOException, NoSuchAlgorithmException {
messagedigest = MessageDigest.getInstance("SHA-1");
FileInputStream in = new FileInputStream(file);
FileChannel ch = in.getChannel();
MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0,
file.length());
messagedigest.update(byteBuffer);
return bufferToHex(messagedigest.digest());
}
/**
* 获取文件CRC32码
*
* @return String
* */
public static String getCRC32(File file) {
CRC32 crc32 = new CRC32();
// MessageDigest.get
FileInputStream fileInputStream = null;
try {
fileInputStream = new FileInputStream(file);
byte[] buffer = new byte[8192];
int length;
while ((length = fileInputStream.read(buffer)) != -1) {
crc32.update(buffer, 0, length);
}
return crc32.getValue() + "";
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
} finally {
try {
if (fileInputStream != null)
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static String getMD5String(String s) {
return getMD5String(s.getBytes());
}
public static String getMD5String(byte[] bytes) {
messagedigest.update(bytes);
return bufferToHex(messagedigest.digest());
}
/**
* @Description 计算二进制数据
* @return String
* */
private static String bufferToHex(byte bytes[]) {
return bufferToHex(bytes, 0, bytes.length);
}
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);
}
public static boolean checkPassword(String password, String md5PwdStr) {
String s = getMD5String(password);
return s.equals(md5PwdStr);
}
}
相关推荐
if(strcmp(szTemp, "crc32" ) == 0) hashmgr.SelectAlgorithm(HASHID_CRC32, true); if(strcmp(szTemp, "nocrc32" ) == 0) hashmgr.SelectAlgorithm(HASHID_CRC32, false); if(strcmp(szTemp, "fcs16" ) == 0...
首先创建`CRC32`对象,然后调用`update()`方法传递数据,最后调用`getValue()`获取校验码。 - **自定义实现**:对于更复杂的CRC校验需求,如自定义CRC多项式,可能需要自定义算法实现。这通常涉及到位操作和移位...
这个工具主要用于计算文本和文件的多种校验值,包括MD5、SHA-1以及CRC32。这些校验值在信息技术领域中扮演着至关重要的角色,确保数据的完整性和一致性。 MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希...
1. **CRC32**:Java标准库中的`java.util.zip.CRC32`类可以用来计算CRC32校验码。它是一个长整型变量,通过对输入数据的每一位进行累加计算,最后得到的值就是CRC32校验码。 ```java CRC32 crc32 = new CRC32(); ...
总结,这个基于Java的校验码工具结合了MD5、SHA1和CRC32三种校验算法,通过Swing构建的用户界面,提供了一个直观易用的平台来验证数据的完整性和一致性。无论是在个人工作还是企业环境中,这样的工具都能发挥重要的...
在提供的压缩包文件中,`hasher.exe`可能是一个应用程序,用于计算文件的MD5、SHA1和CRC散列值。用户可以使用这个工具对文件进行校验,确保下载的文件与原始源文件一致,防止因网络传输错误或恶意篡改导致的数据不...
在Java中,`java.util.zip.CRC32`类提供了CRC32的实现: ```java import java.util.zip.CRC32; public class CRC32Example { public static long getCRC32(String input) { CRC32 crc32 = new CRC32(); crc...
然而,有时在Windows和Linux系统下计算同一个文件的MD5哈希值可能会得到不一致的结果,这主要是由于文件处理方式和传输过程中的差异造成的。 1. **文件读取方式**: 在Windows和Linux系统中,文件读取方式的不同...
首先创建`CRC32`实例,然后调用`update()`方法将数据逐字节或逐块传递给它,最后通过`getValue()`方法获取CRC校验码。 ```java CRC32 crcCalculator = new CRC32(); byte[] data = ... // 待校验的数据 ...
HashFiles是一款免费的实用程序,用来计算CRC32,MD5文件或多个文件的SHA256和SHA1哈希有用。你不会觉得很难使用的应用程序,它的用户界面是不言自明,需要的用户快来下载吧。 虽然有一个专门的按钮,你可以用...
6. **数据校验**:为了确保文件传输的准确性,通常会使用CRC校验或MD5/SHA哈希值来验证文件完整性。Java提供Checksum接口和MessageDigest类,可以方便地计算和比较这些校验值。 7. **文件压缩与解压缩**:Java的...
它还可以对 Windows 和 Linux 的 MD2、MD5、SHA-1 和 SHA-2 哈希(SHA-256、SHA-384、SHA-512)、CRC16、CRC32、CRC64 和 Adler32 哈希密码进行暴力破解。 它需要 java 7u4 及更高版本,以及 7-zip v9.20 及更高...
校验码如CRC、MD5或SHA用于检测数据传输过程中的错误。 17. **JSON处理**: JSON是常见的数据交换格式,Java有Gson、Jackson、JSON-P和JSON-Simple等多个库用于解析和生成JSON。 综上所述,这个“java工具类.java...
JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境 Java SE Development Kit 13 - Downloads ...CRC32 :49C8DC58
为了保证文件完整性和安全性,可能需要使用校验和(如CRC32)以及SSL/TLS加密。 5. **GUI界面** QQ的界面通常是图形用户界面(GUI),在Java中,我们可以使用Swing或JavaFX库来创建。Swing提供了丰富的组件,如...
文件哈希支持:CRC16、CRC32、MD4、MD5、SHA-1、SHA-224、SHA-256、SHA-384和SHA-512。反汇编程序支持多种不同的体系结构:ARM32 (ARM, Thumb, Cortex-M, AArch32)、ARM64、MIPS (MIPS32, MIPS64, MIPS32R6, Micro)...
文件哈希支持:CRC16、CRC32、MD4、MD5、SHA-1、SHA-224、SHA-256、SHA-384和SHA-512。 反汇编程序支持多种不同的体系结构:ARM32 (ARM, Thumb, Cortex-M, AArch32)、ARM64、MIPS (MIPS32, MIPS64, MIPS32R6, Micro...
常用的哈希函数有CRC32、MD5、SHA系列等。 5. **组合哈希值**:将所有块的哈希值组合起来,形成最终的SimHash值。这个组合过程通常是通过异或运算来完成的,因为异或操作具有“相同为0,不同为1”的特性,这有利于...
软件说明: ...具有自定义初始值和多项式的 CRC16 和 CRC32 MD4、MD5 SHA-1、SHA-224、SHA-256、SHA-384、SHA-512 支持许多不同架构的反汇编程序 ARM32(ARM、Thumb、Cortex-M、AArch32) ARM64 MIP