计算文件的 MD5 校验和

2023-12-27

我在用着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(使用前将#替换为@)

计算文件的 MD5 校验和 的相关文章

  • Rx Framework:在超时时执行操作,而不中断原始可观察序列

    给定一个可观察的源 通过轮询低级设备的 变化 状态生成 observable source metacode IObservable
  • C++ 中的字符串到 LPCWSTR

    我正在尝试从字符串转换为 LPCWSTR 我使用多位 1 例如 LPCWSTR ToLPCWSTR string text LPCWSTR sw LPCWSTR text c str return sw 2 返回中文字符 LPCWSTR T
  • 将 Visual Studio 2012 C++ 单元测试项目链接到 exe 会导致访问冲突

    我从现有的整体 exe 本机 Visual Studio 2012 项目开始 我想添加一个本机单元测试项目 根据http msdn microsoft com en us library hh419385 aspx objectRef ht
  • 在 Jscript 中实例化 System.Threading.Thread 对象

    我正在尝试使用 Jscript 创建一个新的 System Threading Thread 对象 但我无法让构造函数工作 如果我只是执行以下操作 var thread new Thread threadFunc function thre
  • 混合 VS2012 平台工具集

    我们正在从 VS2005 切换到 VS2012 update 2 我们正在构建大量 主要是控制台 本机 C 无 MFC ATL 可执行文件 它们使用几个常见的静态链接库 这些可执行文件主要在 Win7 计算机上运行 但有些也部署在较旧的 X
  • 如何使用 ASP.NET MVC 4.0 DonutOutputCache VaryByCustom 使缓存失效

    我正在为我的 ASP NET 应用程序使用 DevTrends MvcDonutCaching 包 它工作得很好 我目前遇到的一个问题是使我为子操作设置的 VaryByCustom 缓存无效 这是我用于 VaryByCustom 设置的一些
  • 如何在单独的类库中管理客户端上下文对象?

    我正在尝试创建一个库 类库 对于共享点 它将拥有所有共享点 dll 来与共享点服务器交互上传文件 文档并创建文档库和文档集 现在这个库可以被使用客户端 例如 Web 应用程序 asp net webform 或 mvc 或控制台应用程序或
  • tcmalloc/jemalloc 和内存池之间有什么区别(以及选择的理由)?

    tcmalloc jemalloc是改进的内存分配器 还引入了内存池以更好地分配内存 那么它们之间有什么区别以及在我的应用中如何选择它们呢 这取决于您的程序的要求 如果您的程序有更多的动态内存分配 那么您 需要从可用的分配器中选择一个内存分
  • C#中如何将委托转换为对象?

    我正在使用反射类来调用其他 dll 上的一些方法 方法的参数之一是委托类型 我想通过使用反射来调用这个方法 所以我需要将函数参数作为对象数组传递 但我找不到任何关于 如何将委托转换为对象 提前致谢 委托是一个对象 只需像平常一样创建预期的委
  • 那里有更好的 DateTime.Parse 吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道有一个库 付费或免费 能够处理比 DateTime Parse 使用的更常见的日期时间格式 能够
  • 为什么 C# 编译的正则表达式比等效的字符串方法更快?

    每次我必须对字符串执行简单的包含或替换操作 其中我正在搜索的术语是固定值 时 我发现如果我获取示例输入并对其进行一些分析 则使用编译的正则表达式是几乎 总是比使用 String 类中的等效方法更快 我尝试过比较多种方法 hs是要搜索的 干草
  • CS0246 找不到类型或命名空间名称“ErrorViewModel”(您是否缺少 using 指令或程序集引用?)

    我收到 CS0246 错误代码 我正在做一个 MVC net core 项目 我正在将 Razor 合并到我的 C 代码中 我在进行构建时收到此错误 我在最后一行收到错误 有人能帮我解决这个问题吗 global Microsoft AspN
  • “sizeof”对不完整类型列表结构 C 的无效应用

    我正在尝试实现一种处理页面错误的替换算法 因此 我尝试使用 malloc 创建一个循环链表 但出现以下错误 无效的应用程序sizeof to incomplete typepageInMemory 以下是代码 typedef struct
  • Facebook Graph API“/userid/feed”返回空白

    我正在使用 Facebook C SDK 但似乎无法使用 Graph API 获取反馈数据 我已从用户那里获得了以下扩展权限 范围 离线访问 publish stream publish checkins create event read
  • Cuda:最小二乘求解,速度较差

    最近 我使用Cuda编写了一个名为 正交匹配追踪 的算法 在我丑陋的 Cuda 代码中 整个迭代需要 60 秒 而 Eigen lib 只需 3 秒 在我的代码中 矩阵 A 是 640 1024 y 是 640 1 在每一步中 我从 A 中
  • 正则表达式基于组的不同替换?

    所以我对正则表达式比较陌生 并且做了一些练习 我正在玩一个简单的 混淆器 它只是寻找 dot or dot or at or at 不区分大小写 并且在匹配项之前或之后有或没有任意数量的空格 这是针对通常情况的 someemail AT d
  • 为 C++ 类播种 rand()

    我正在开发一个 C 类 它使用rand 在构造函数中 我真的希望这个班级在几乎所有方面都能照顾好自己 但我不知道在哪里播种rand 如果我播种rand 在构造函数中 每次构造我的对象类型的新实例时都会对其进行播种 因此 如果我按顺序创建 3
  • 访问 Visual Studio 扩展中的当前代码窗格

    我正在编写一个 Visual Studio 2010 扩展 在代码视图中带有右键单击菜单 我希望能够从菜单项事件处理程序检查当前代码 但无法在对象模型中找到执行此操作的位置 如何在 Visual Studio 扩展中访问当前窗口中的代码 E
  • Android NDK - 仅用 C/C++ 编写

    有没有一种可能的方法可以使用 C C 编写整个 NDK 应用程序 而无需像 hello jni 示例项目 HelloJni java 中那样的 Java 入门 类 以某种方式创建一个 HelloJni c 来执行相同的操作 从 Androi
  • MsBuild 在 Visual Studio Online 上找不到恢复的 NuGet 包

    我尝试构建一个存储在 Visual Studio Online 上的外部 GIT 存储库中的解决方案 它有以下步骤 1 Git 恢复 有效 2 NuGet 恢复 有效 3 构建 不起作用 查看日志时我的第一个猜测是 MsBuild 没有查找

随机推荐

  • 当按下键盘上的按钮时如何使方块移动? Tkinter、Python

    当按下键盘上的 d 按钮 例如 时 如何使方块移动 from tkinter import root Tk root title Snake root width 400 root height 400 field Canvas root
  • 如何避免使用共享静态库的 xcode 中的“重复符号”错误?

    我将静态库 A B 和 C 组织到 Xcode 项目中 A 和 B 依赖于 C 当我构建依赖于 A 和 B 的 iPhone 项目时 我收到链接器错误 指出在 A 和 B 中检测到重复符号 来自 C 我如何组织这三个静态库 以便我可以将它们
  • 高斯拉普拉斯算子是用于斑点检测还是边缘检测?

    以下代码来自 被要求删除链接 但我想知道它到底是如何运作的 我很困惑这是否被认为是边缘检测或斑点检测 因为维基百科将高斯拉普拉斯算子 LoG 列为斑点检测 https en wikipedia org wiki Blob detection
  • Xamarin UWP 应用程序无法运行

    我正在使用 Visual Studio Update 3 Update 3 补丁 我创建了一个空白XAML 应用程序 Xamarin Forms 便携式 使用 C 的解决方案跨平台模板 我在配置管理器中选中了构建和部署 我已将解决方案更新为
  • Android 在 LazyColumn 中组合 LazyRow 会产生垃圾行为

    我正在尝试创建一个具有嵌套滚动行为的撰写屏幕 为此 我使用lazyColumn作为父级 并且在其中我确实有多个带有layRow的行 val scrollState rememberLazyListState LazyColumn state
  • 如何使用 Phonegap Build 删除 iOS 状态栏?

    使用 Phonegap Build 3 1 时是否可以去掉 iOS7 中的状态栏 在 Xcode 中本地构建时 我可以删除状态栏 但是当我尝试 Phonegap Build 时 它又回来了 是否有配置首选项可以完全删除状态栏 如果没有 是否
  • 在后台将 iPhone 作为 iBeacon 运行

    是否可以将 iOS 7 设备作为蓝牙 LE 外围设备 iBeacon 运行并在后台进行广告 我已经能够使用下面的代码让它在前台做广告 并且可以从另一台 iOS 设备上看到它 但一旦我返回主屏幕 它就会停止广告 我确实在 plist 中添加了
  • 使用Kafka主题存储多年数据

    我正在寻找一种从多个设备收集指标数据的方法 数据应该由多个 group by 之类的函数聚合 聚合函数列表不完整 稍后将添加新的聚合 并且需要聚合第一天收集的所有数据 是否可以创建具有 100 年有效期的 Kafka 主题并将其用作此目的的
  • mapStateToProps 必须返回一个对象。相反收到了Map{}?

    您好 我使用不可变映射作为状态 当我尝试 mapStateToProps 时 出现此错误 未捕获的不变违规 mapStateToProps必须返回一个对象 而是收到了 Map 这是我的代码 成分 const mapStateToProps
  • Android 模拟器的阿拉伯语文本支持

    我想在我的 Android 应用程序中显示阿拉伯文本 我正在开发适用于 Android 1 6 的应用程序 问题是 当我运行该应用程序时 我只能看到方框而不是阿拉伯文本 谷歌搜索后 我发现必须添加阿拉伯语字体 ttf true type f
  • 有没有办法从签名的 APK 中获取密钥哈希?

    有没有办法从签名的 APK 中获取密钥哈希 我们有一个签名的 Android apk 文件 我们想找出这个 APK 的密钥哈希 用于 Facebook SDK 我们可以通过像 jarsigner 这样的东西来做到这一点吗 有什么建议么 在
  • 验证 QTableView 中的用户输入

    我有一个QTableView我想验证用户输入 如果用户在单元格中插入无效值QTableView 我想突出显示该单元格并禁用QPushButton 我怎样才能实现这个目标 我可以用吗QValidator 是的 你可以这样做 使用自定义QIte
  • 如何在PHP中实现一个可以接受任意参数的函数?

    PHP有这样的功能吗 您可以使用这些功能 func get arg http php net manual en function func get arg php http php net manual en function func
  • 如何在特定的 ajax 调用上调用 .ajaxStart()

    我对网站文档进行了一些 ajax 调用 这些调用根据 ajax 状态显示或隐藏进度条 document ajaxStart function ajaxProgress show document ajaxStop function ajax
  • mime.types 不用于 Angular 8 应用程序的 javascript 和 css 文件(使用 nginx:alpine 进行 dockerized)

    我的角度应用程序有一个多阶段 docker 映像 它使用nginx 高山基础图像 我有以下 nginx 配置和 VHOST 设置文件 在 docker 容器内 etc nginx nginx conf etc nginx conf d de
  • 如何在不注销的情况下清除所有会话变量

    我试图清除所有会话变量 但不注销当前用户 user request session get member id None request session flush request session modified True request
  • Swagger发送正文和formData参数[重复]

    这个问题在这里已经有答案了 我正在使用 Swagger 2 0 但在发送多个 post 参数时遇到问题 我有一个招摇错误Operation cannot have a body parameter and a formData parame
  • Java 接口使用指南——接口中的 getter 和 setter 是否不好?

    人们如何看待界面中使用的最佳指南 什么应该和不应该进入界面 我听人们说 作为一般规则 接口必须只定义行为而不是状态 这是否意味着一个接口不应该包含 getter 和 setter 吗 我的观点 对于 setter 来说也许不是这样 但有时我
  • 从 Hibernate 会话获取 EntityManager

    我已经在 Hibernate 上构建了我的应用程序 但现在我需要为一个第三方模块获取 EntityManager 您能给我一些如何从 Hibernate 获取 JPA 对象的提示吗 就我而言 我有 SessionFactory 并需要 En
  • 计算文件的 MD5 校验和

    我在用着iTextSharp https en wikipedia org wiki IText从 PDF 文件中读取文本 但是 有时我无法提取文本 因为 PDF 文件仅包含图像 我每天都会下载相同的PDF文件 我想看看PDF是否被修改过