原文链接: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);
}
}
相关推荐
Check Java写的编码校验小工具。可以计算文本、文件的MD5、SHA-1、CRC32等校验值。
md5 SHA 哈希算法 数据完整性验证工具 非常小 提供三种算法:MD5 SHA1 CRC 算法
使用Java开发的桌面应用程序,可用于查看字符串和文件的校验码。支持MD5、SHA1和CRC32三种校验算法。
它还可以对 Windows 和 Linux 的 MD2、MD5、SHA-1 和 SHA-2 哈希(SHA-256、SHA-384、SHA-512)、CRC16、CRC32、CRC64 和 Adler32 哈希密码进行暴力破解。 它需要 java 7u4 及更高版本,以及 7-zip v9.20 及更高...
JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境 Java SE Development Kit 13 - Downloads ...CRC32 :49C8DC58
文件哈希支持: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...
软件说明: ...具有自定义初始值和多项式的 CRC16 和 CRC32 MD4、MD5 SHA-1、SHA-224、SHA-256、SHA-384、SHA-512 支持许多不同架构的反汇编程序 ARM32(ARM、Thumb、Cortex-M、AArch32) ARM64 MIP
JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境 Java SE Development Kit 1.8 - Downloads ...CRC32 :6F3ED649
64位jdk,本论坛下载的,分个流,官网下载太费劲了。 文件名称:JAVA8SE_jdk-8u211-windows-x64.zip 文件大小:223687779 字节 MD5 :B3A80F5ADF6CE2A0C56A18709B52A3ED SHA1 :07278D4CA0AF4885AB...CRC32 :090611F9
aes、crc32、des/3des、dh、dsa、ecdsa、elgamal、idea、md2/md4/md5、pbe、rsa、sha1/sha224/sha256/sha512。 所有算法的实现均是JDK官方实现或者是Apache的开源实现,本人不对算法做任何单独实现。所以关于算法...
文件名称:C:\Users\LBWNB\Desktop\jdk-8u231-windows-x64\jdk-8u231-windows-x64.exe 文件大小:220392992 字节 文件版本:8.0.2310.11 修改时间:2019年11月11日 13:31:03 MD5 :F8A35AB83D651DC...CRC32 :5D7E32D1
可以攻玉1094.1 加固你的系统1094.2 加密组件Bouncy Castle 1114.3 辅助工具Commons Codec 1204.4 小结121第二部分实践篇第5章电子邮件传输算法—Base64 1345.1 Base64算法的由来1345.2 Base64算法的定义1345.3 Base...
不用再每个人都从中央仓库下载存储库、依赖文件,还可以上传自定义构件,精简了本地内部仓库的维护和外部仓库的访问,极大的提高团队和个人的开发效率,配合maven、java等统一了开发环境。 *支持开箱即用、支持...
#Java 加密框架 #Summary 这是一个实现了一些加密算法的小 ...SHA1 SHA256 SHA512 MD5 ###其他 HMAC ###对称密钥算法 AES 山茶花(进行中) RC4 RC5(进行中) ###编码 Base64 ###校验和 CRC #参考书目
能够进行包括 CRC-16、CRC-32、Adler32、MD2、MD4、MD5、RIPEMD160、SHA-1、SHA-256和 TIGER 在内的较验和或散列计算。 转载声明: 声明:大眼仔旭 | 本文采用[BY-NC-SA]协议进行授权 文章名称:《专业文本/十六进制...
帶有自定義初始值和多項式的 CRC16 和 CRC32 MD4、MD5 SHA-1、SHA-224、SHA-256、SHA-384、SHA-512 支持多種不同架構的反彙編器 ARM32(ARM、拇指、Cortex-M、AArch32) ARM64 MIPS(MIPS32、MIPS64、MIPS32R6、微型...
可以攻玉109 4.1 加固你的系统109 4.2 加密组件Bouncy Castle 111 4.3 辅助工具Commons Codec 120 4.4 小结121 第二部分实践篇 第5章电子邮件传输算法—Base64 134 5.1 Base64算法的由来134 5.2 Base64算法的定义134...
它产生多种校验和,包括:MD5、SHA-1、SHA-256 和 CRC32。 您可以通过编译在com.js.jhash找到的 java 文件,使用命令提示符运行程序。 如果您使用 Eclipse 作为您选择的 IDE,您可以git clone项目并使用 Eclipse ...
CRC-32, Custom CRC, SHA-1, SHA-256, SHA-384, SHA-512, MD-2, MD-4, MD5 - Statistical view: Graphical representation of the character distribution. Helps to identify the data-type of a selection. - ...