我在用着iTextSharp https://en.wikipedia.org/wiki/IText从 PDF 文件中读取文本。但是,有时我无法提取文本,因为 PDF 文件仅包含图像。我每天都会下载相同的PDF文件,我想看看PDF是否被修改过。如果无法获取文本和修改日期,则为MD5 http://en.wikipedia.org/wiki/MD5校验和是判断文件是否已更改的最可靠方法?
如果是的话,一些代码示例将不胜感激,因为我在密码学方面没有太多经验。
使用起来非常简单系统.安全.加密.MD5 https://msdn.microsoft.com/en-us/library/system.security.cryptography.md5(v=vs.110).aspx:
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead(filename))
{
return md5.ComputeHash(stream);
}
}
(我相信actually使用的 MD5 实现不需要被丢弃,但无论如何我可能仍然会这样做。)
之后如何比较结果取决于您;例如,您可以将字节数组转换为 base64,或者直接比较字节。 (请注意数组不会覆盖Equals
。使用 base64 更容易正确使用,但如果您真的只对比较哈希值感兴趣,效率会稍低。)
如果您需要将哈希表示为字符串,可以使用以下命令将其转换为十六进制BitConverter
:
static string CalculateMD5(string filename)
{
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead(filename))
{
var hash = md5.ComputeHash(stream);
return BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant();
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)