使用哈希值跟踪文件的唯一版本

2023-12-07

我将跟踪可能数百万个不同文件的不同版本,我的目的是对它们进行散列以确定我已经看到了该文件的特定版本。目前,我只使用 MD5(该产品仍在开发中,因此尚未处理过数百万个文件),这显然不够长,无法避免冲突。

然而,这是我的问题 -如果我使用两种不同的方法对文件进行哈希处理并存储这两种哈希值(例如 SHA1 和 MD5),或者如果我选择一个更长的哈希值(例如 SHA256)并单独依赖它,我是否更有可能避免冲突?我知道选项 1 有 288 个哈希位,而选项 2 只有 256 个,但假设我的两个选择的总哈希长度相同。

由于我正在处理潜在的数百万个文件(以及随着时间的推移这些文件的多个版本),我想尽我所能来避免冲突。然而,CPU 时间并不是(完全)免费的,所以我感兴趣的是社区对这种权衡的看法 - 向我的散列中添加更多位的计算成本是否会按比例增加,以及多个不同散列相比是否有任何优势给定两个解决方案中相同位数的单个、更长的散列?


我对这个问题进行了很多思考和摆弄,为了安全起见,我建议使用 SHA256(它速度较慢,但​​ CPU 仍应能够跟上)。我不知道这是否会显着削弱哈希强度,但您可能希望将哈希值打包在 16MB 块中(例如),然后在最后对哈希值进行哈希处理,以便可以并行化。

我在处理大量文件和哈希时学到的一个教训是:一次性向 PostgreSQL 数据库添加数百万条记录并不是很快。当我编写一个程序来哈希一百万个文件并将它们存储在 PostgreSQL 数据库中时,数据库通常是瓶颈。我没有尝试MySQL,但我推测它大致相同。 SQLite 可能要快得多,因为没有客户端/服务器开销。我建议首先尝试 SQLite。也可能太慢了。

另外,如果您通过散列将一百万个文件存储到一个目录中并丢失了索引文件,则很难找到东西:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用哈希值跟踪文件的唯一版本 的相关文章

  • 什么时候使用哈希表?

    什么情况下使用哈希表可以提高性能 什么情况下不能 哪些情况不适合使用哈希表 什么情况下使用哈希表可以提高性能 什么情况下不能 如果您有理由关心 请使用哈希表和您正在考虑的其他任何内容来实现 将您的实际数据放入其中 并衡量哪个性能更好 也就是
  • NGINX hashbang 重写

    我想知道 hashbang url 的位置或重写 nginx 指令会是什么样子 基本上像前端控制器一样通过 hashbang 路由所有非 hashbanged url 所以 http example com about staff 将路由至
  • 如何使redis中的“HSET”子键“过期”?

    我需要使 Redis 哈希中所有超过 1 个月的密钥过期 这不可能 https github com antirez redis issues 167 issuecomment 2559040 为了保持 Redis 简单 https git
  • JSON 中的哈希到底是什么?

    我正在学习 JSON 但我发现你也可以将所谓的 哈希 放入 JSON 中 我在哪里可以找到什么是哈希 或者你能向我解释一下什么是哈希吗 另外 什么是哈希图 我有 C 和 C 经验 正在学习 JS Jquery 和 JSON 哈希是一个稀疏数
  • 在 Javascript 中检测 Flash 文件何时完成播放

    我正在使用 Javascript 将 Flash 文件嵌入到网站中 然后需要在播放完成后将其删除 有没有办法用普通的 Javascript 来做到这一点 或者是否需要将回调类型的函数添加到 Flash 文件本身 我该如何编码 JavaScr
  • 在 Perl 中使用数据引用的正确方法

    我有一组想要处理的数据 为了简化我的代码 最好通过指向原始数据的引用数组来访问我的数据的某些子集 比解释更好的是 我写下了这个例子 它还没有工作 最后 我想更新原始数据 而不必更新所有子集 用 Perl 可以做这样的事情吗 usr bin
  • 比较 ruby​​ 哈希值[重复]

    这个问题在这里已经有答案了 可能的重复 如何比较两个哈希值 https stackoverflow com questions 4928789 how do i compare two hashes 我有两个 ruby 哈希值 本质上是模型
  • PHP 的password_verify() 是否可以抵御极长的密码(DoS 攻击)?

    一般攻击场景 2013 年 Django 存在一个普遍漏洞 攻击者可以通过非常大的密码创建极其密集的 CPU 计算 请参阅此处的安全通知 https www djangoproject com weblog 2013 sep 15 secu
  • c# AudioFingerprinting 和局部敏感哈希

    我之前发现过类似的帖子 但没有真正回答这个问题 在我的指纹识别中 我生成了一个包含 5 个整数的记录集 例如 33 42 88 121 194 这些对应于特定音乐样本的最高幅度的频率 例如 对于 30ms 的音频样本 我有以下频率的桶 0
  • md5 哈希冲突。

    如果从 1 数到 X 其中 X 是第一个与前一个数字发生 md5 冲突的数字 那么 X 是哪个数字 我想知道如果我使用 md5 作为序列号 在发生冲突之前我可以期望能够枚举多少个单元 Theoretically you can expect
  • 是否存在可以保证哈希算法唯一的情况?

    如果我使用字节大小大于数据 例如 sha 256 的哈希算法对大小受限的类似数据 例如社会安全号码 进行哈希处理 哈希是否能保证与数据具有相同级别的唯一性 原始数据 哈希冲突的概率与输入字符串的大小无关 除非它指示需要多少个输入来保持唯一性
  • 基本 2d 碰撞检测

    我可以在哪里阅读有关游戏或具有一定交互性的应用程序的基本 2D 碰撞检测的更多信息 编辑 Canvas 游戏的 javascript 怎么样 最重要的定理是分离轴定理 SAT 基本上 它允许您检测两个之间的碰撞convex多边形 好的阅读材
  • 当我使用加盐 CRYPT_MD5 加密我的密码时,正在加密什么?

    对字符串使用 md5 总是会产生字母数字加密结果 即 没有符号 然而 当我使用 php crypt 函数 特别是带有盐的 CRYPT MD5 并且它已打开 我已经检查过 时 它返回的假定 md5 哈希看起来不像 md5 哈希 例如 如果我
  • Google Analytics 和哈希/锚点不起作用

    我希望你可以帮助我 我有一个 Javascript 画廊 每张图片都有一个特定的哈希值 www example com gallery html title 1 我的统计数据位于 Google Analytics 上 但即使我在相应的代码中
  • 数字签名(PKCS#7 - 延迟签名)/自应用签名以来文档已被更改或损坏

    我已经浏览了所有类似的问题 但找不到应用 itextsharp 延迟签名的情况 基本上 我的应用程序使用以下方式签署 pdf 文档PKCS 7由远程 Web 服务创建的签名 我的应用程序向此 Web 服务发送原始文档的哈希值 添加空签名字段
  • 检测重复文件

    我想检测目录树中的重复文件 当发现两个相同的文件时 将仅保留其中一个重复文件 并删除其余的重复文件以节省磁盘空间 重复是指具有相同内容的文件 但文件名和路径可能不同 我正在考虑为此目的使用哈希算法 但不同的文件有可能具有相同的哈希值 因此我
  • 检测哪些 Tilemap 单元与 Unity 中的 Collider2D 发生碰撞

    我有一个Tilemap 这有一个TilemapCollider2D成分 在其上绘制了几个图块 每个图块都有自己的精灵碰撞器形状 然而它们是精灵图块而不是预制件 它们不是使用预制画笔绘制的 我还有一个游戏对象Collider2D a Circ
  • 如何将一个人的身份与其个人数据分开?

    我正在编写一个应用程序 其主要目的是保留用户列表 购买 我想确保即使我作为开发人员 或任何拥有完整权限的人 访问数据库 无法计算出多少钱 特定的人已经花费或购买了东西 我最初想出了以下方案 user hash item price a45c
  • 散列 hash_hmac 时,Convert.ToChar(0) 散列结果与 PHP 中的 chr(0) 不同的字符串

    我在 PHP 中有一个字符串 它被转换为字节数组并进行哈希处理 转换为字节数组的字符串如下所示 G 字符 0 便便 我需要 C 中的等效字节数组 这样我才能得到相同的哈希值 编辑 这是完整的问题 生成的哈希值不同 PHP api secre
  • 加速球之间的碰撞检测

    我正在编写一个物理引擎 模拟器 其中包含 3D 太空飞行 行星 恒星引力 船舶推力和相对论效应 到目前为止 一切进展顺利 但是 我需要帮助的一件事是碰撞检测算法的数学 我使用的运动迭代模拟基本上如下 注意 3D 矢量全部大写 For eac

随机推荐

  • 如何防止 CodeIgniter 3 中的会话劫持

    我知道这是一个重复的问题Codeigniter PHP 会话安全问题但遗憾的是 我的案例中建议的所有措施都失败了 这就是为什么我重复这个问题以及 2011 年提出的问题 现在它的答案已经过时了 所以请不要重复它 在我的场景中我启用了 con
  • 更改文件中的一个字符会导致 MSysGit 认为整个文件已更改

    我有一个包含 C 代码的 git 存储库 并且我正在运行MSysGit在 Windows 上 core autocrlf已打开 并且我正在使用 gitattributes from 这个问题 并且我 重新规范化 了我的回购协议 如底部所述这
  • malloc 中的信号 11 SIGSEGV?

    我通常喜欢解释清楚的问题和答案 但在这种情况下我实在无法给出更多的线索 问题是 为什么 malloc 给我 SIGSEGV 下面的调试显示程序没有时间测试返回的指针是否为 NULL 并退出 程序退出 INSIDE MALLOC 我假设 gl
  • 让 div 延伸整个高度

    有没有一种方法可以让 div 延伸到全高 我也有一个粘性页脚 这是网页 网站已删除 我所说的中间部分是白色的 div midcontent 它具有 CSS 值 midcontent width 85 margin 0 auto paddin
  • 提交后清除 JSF 表单输入值

    如果有一个表单 并且有一个文本框和一个按钮 那么在提交表单后如何删除文本框的内容
  • spring-boot web 应用程序在一段时间后失去连接 MySQL / RDS 的能力

    我有一个普通的 spring boot 1 2 x Web 应用程序 带有嵌入式 Tomcat 7 x 容器并连接到 RDS 实例 运行 MySQL 5 6 如果应用程序空闲一段时间 8小时 然后收到请求 则会抛出以下异常 BEGIN NE
  • Swift 崩溃 libobjc.A.dylib objc_msgSend

    我使用 crashlytics 来获取 AppStore 中我的应用程序的崩溃情况 一些用户遇到了崩溃 我似乎无法在我的机器上重现 通过 TestFlight 测试我的应用程序的少数朋友也没有 这是来自 Fabric 的日志 Thread
  • JavaScript 如何分配函数的“name”属性?

    在 JavaScript 中 当我定义这样的函数时 function aaa 我稍后可以通过以下方式访问该名称name属性 aaa name 这将返回 aaa 但是 当我通过定义函数时var 从技术上讲它应该是匿名函数 没有name属性 v
  • Android布局和定位问题

    最近我正在构建一个应用程序 现在我在布局和定位方面遇到了一些问题 事实上 我构建了我的布局 但是当我在更大的屏幕上测试时 所有内容都崩溃了 并且我的应用程序的外观不好 制作 UI 的最佳方式是什么 参考支持多屏 另外 在创建 UI 时 尽量
  • pandas.to_datetime 给出 OutOfBoundsDatetime 错误

    我有某种格式的数据 我想将其读入 pandas DataFrame 中 有些行给我一个错误 下面是其中一个字符串的一个最小示例 但我有几个它不起作用的地方 奇怪的是有些它起作用的地方 确切的错误是 OutOfBoundsDatetime 越
  • 按 Enter 键确定是否从 HTML 5 数据列表中选择了元素

    jQuery document body on input icdCodeInput function event 我有一个带有 icdCodeInput 类的 HTML 5 数据列表 当我使用鼠标或按 Enter 键从列表中选择一个项目时
  • 是否可以使用加载项在 Visual Studio 2012 中处理 Qt4 项目?

    我发现 Qt VS addin 1 1 x 可与 Visual Studios 包括 2010 一起使用 Qt VS addin 1 2 x 不支持 VS 2012 中的 Qt4 该插件是否有任何可以在 VS 2012 中处理 Qt4 的分
  • 在 GROUP BY 中使用 LIMIT 来获得每组 N 个结果?

    以下查询 SELECT year id rate FROM h WHERE year BETWEEN 2000 AND 2009 AND id IN SELECT rid FROM table2 GROUP BY id year ORDER
  • PostgreSQL hstore 数组列上的索引

    我知道您可以在 hstore 列中的字段上创建索引 我知道您还可以在数组列上创建 GIN 索引 但是在 hstore 数组上创建索引的语法是什么 e g CREATE TABLE customer pk serial PRIMARY KEY
  • 防止数组覆盖并创建新的数组索引

    我有一个文件 我需要将该文件的内容保存在我的 MySQL 数据库中 这是我用来解析文件的代码 lines file tmp filename data array if handle fopen tmp filename r FALSE w
  • 将时间戳(以微秒为单位)转换为 r 中的数据和时间

    我正在尝试将以微秒为单位的时间戳转换为 R 中的以下格式 年 月 日 时 分 秒 我尝试过不同的方法 但未能成功 按照我的代码 options digits 16 value 1521222492687300 as POSIXct valu
  • 如何在 Perl 的 system() 中检查管道中第一个程序的状态?

    perl e system crontab1 l print 按预期返回 1 程序 crontab1 不存在 perl e system crontab1 l grep blah print 返回 256 检查第一个 或两个 程序的状态的方
  • 如何自动缩放传单中的多边形?

    我的 geoJson 格式如下 statesData features push type Feature id AFG properties name Afghanistan geometry type Polygon coordinat
  • 是否可以阻止 JIT 优化方法调用?

    我们正在构建一个用于 Java 字节码程序的平均情况运行时分析的工具 其中一部分是测量实际运行时间 因此 我们将采用任意的 用户提供的方法 该方法可能有也可能没有结果 并且可能有也可能没有副作用 示例包括快速排序 阶乘 虚拟嵌套循环 并执行
  • 使用哈希值跟踪文件的唯一版本

    我将跟踪可能数百万个不同文件的不同版本 我的目的是对它们进行散列以确定我已经看到了该文件的特定版本 目前 我只使用 MD5 该产品仍在开发中 因此尚未处理过数百万个文件 这显然不够长 无法避免冲突 然而 这是我的问题 如果我使用两种不同的方