我希望使用Java来获取文件的MD5校验和.我真的很惊讶,但我找不到任何显示如何获取文件的MD5校验和的内容.
怎么做?
我正在使用iTextSharp从PDF文件中读取文本.但是,有时我无法提取文本,因为PDF文件只包含图像.我每天都下载相同的PDF文件,我想查看PDF是否已被修改.如果无法获得文本和修改日期,MD5校验和是否是判断文件是否已更改的最可靠方法?
如果是的话,一些代码样本会受到赞赏,因为我对密码学没有多少经验.
有没有简单的方法来生成(和检查)Python中文件列表的MD5校验和?(我有一个小程序,我正在研究,我想确认文件的校验和).
有人告诉我他见过软件系统:
那可能吗?我认为解密MD5哈希是不可能/不可行的.
我知道有MD5词典,但是有没有实际的解密算法?
在Flickr API文档中,您需要找到字符串的MD5总和以生成[api_sig]
值.
如何从字符串生成MD5总和?
Flickr的例子:
串: 000005fab4534d05api_key9a0554259914a86fb9e7eb014e4e5d52permswrite
MD5总和: a02506b31c1cd46c2e0b6380fb94eb3d
那里有许多MD5 JavaScript实现.有谁知道哪一个是最先进的,最错误的,最快的?
我需要它用于这个工具.
我编写了一个简单的Java类来生成Windows Calculator文件的哈希值.我在用Windows 7 Professional with SP1
.我曾尝试Java 6.0.29
和Java 7.0.03
.有人能告诉我为什么我从Java与(很多!)外部实用程序和/或网站获得不同的哈希值?外部的所有东西都相互匹配,只有Java返回不同的结果.
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.zip.CRC32;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class Checksum
{
private static int size = 65536;
private static File calc = new File("C:/Windows/system32/calc.exe");
/*
C:\Windows\System32\calc.exe (verified via several different utilities)
----------------------------
CRC-32b = 8D8F5F8E
MD5 = 60B7C0FEAD45F2066E5B805A91F4F0FC
SHA-1 = 9018A7D6CDBE859A430E8794E73381F77C840BE0
SHA-256 = 80C10EE5F21F92F89CBC293A59D2FD4C01C7958AACAD15642558DB700943FA22
SHA-384 = 551186C804C17B4CCDA07FD5FE83A32B48B4D173DAC3262F16489029894FC008A501B50AB9B53158B429031B043043D2
SHA-512 = 68B9F9C00FC64DF946684CE81A72A2624F0FC07E07C0C8B3DB2FAE8C9C0415BD1B4A03AD7FFA96985AF0CC5E0410F6C5E29A30200EFFF21AB4B01369A3C59B58
Results …
Run Code Online (Sandbox Code Playgroud) 我使用了hashlib(它取代了Python 2.6/3.0中的md5),如果我打开一个文件并将其内容放入hashlib.md5()
函数中,它工作正常.
问题在于非常大的文件,它们的大小可能超过RAM大小.
如何在不将整个文件加载到内存的情况下获取文件的MD5哈希值?
我正在使用一些示例java代码来制作md5哈希.一部分将结果从字节转换为十六进制数字的字符串:
byte messageDigest[] = algorithm.digest();
StringBuffer hexString = new StringBuffer();
for (int i=0;i<messageDigest.length;i++) {
hexString.append(Integer.toHexString(0xFF & messageDigest[i]));
}
Run Code Online (Sandbox Code Playgroud)
但是,由于toHexString显然会从前导零中掉落,所以它并不常用.那么,从字节数组到保持前导零的十六进制字符串的最简单方法是什么?
md5 ×10
java ×4
hash ×3
python ×3
checksum ×2
hashlib ×2
.net ×1
c# ×1
cryptography ×1
digest ×1
encryption ×1
flickr ×1
hashcode ×1
hex ×1
javascript ×1
performance ×1
windows ×1
wow64 ×1