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

2023-12-07

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

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

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


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

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

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

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

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

  • set 中的哈希表在 python 中如何工作?

    据我所知 set在python中通过哈希表来实现O 1 查找复杂度 虽然它是哈希表 但其中的每个条目set必须是可散列的 或不可变的 所以这种和平的代码引发了异常 gt gt gt dict Traceback most recent ca
  • 散列到分组数组中

    我对 ruby 的经验不是很丰富 所以我正在努力格式化一段数据 我有这个哈希 其中包含一些具有相同值的键 例如 key gt value1 key2 gt value2 key3 gt value3 key4 gt value1 key5
  • 如何使用 Node JS 对包含小数/尾随零的数据生成哈希

    在尝试验证 Node JS 中的 Authorize net webhook 通知时 我遇到了以下与小数 尾随零有关的问题 Authorize net 使用 HMAC SHA512 以及 Webhook 通知正文和商家的签名密钥形成哈希 该
  • 为什么 Java 中的 hashCode() 可以对不同对象返回相同的值?

    引用我正在读的书中的一段话首先Java http www amazon co uk Head First Java Kathy Sierra dp 0596009208 关键是 哈希码可以相同 但不一定保证对象相等 因为使用的 哈希算法 h
  • 使用javascript向url添加哈希而不滚动页面?

    在不滚动页面的情况下向 url 添加哈希 使用 JavaScript 我打开页面 我向下滚动 我单击添加哈希的链接 可能带有值 test 示例 http www example com test http www example com t
  • 哈希表的空间复杂度是多少?

    具有 32 位键和指向单独存储的值的 32 位指针的哈希表的大小是多少 是 2 32 个槽 4 字节 键 4 字节 指向值的指针 4 10 9 4 4 32GB 我想了解哈希表的空间复杂度 我认为你问错了问题 数据结构的空间复杂度表示它占用
  • PHP - hash_pbkdf2 函数

    我正在尝试使用此 php 函数执行一个函数来哈希密码 http be php net manual en function hash pbkdf2 php http be php net manual en function hash pb
  • 在 Perl 中使用数据引用的正确方法

    我有一组想要处理的数据 为了简化我的代码 最好通过指向原始数据的引用数组来访问我的数据的某些子集 比解释更好的是 我写下了这个例子 它还没有工作 最后 我想更新原始数据 而不必更新所有子集 用 Perl 可以做这样的事情吗 usr bin
  • Rails/Ruby 合并两个具有相同键、不同值的哈希值

    我有两个想要合并的哈希值 它们看起来像这样 Hello gt 3 Hi gt 43 Hola gt 43 第二个哈希看起来像 Hello gt 4 Hi gt 2 Bonjour gt 2 我想合并这两个哈希数组 使结果看起来像 Hello
  • 获取express.js中间件请求中“#”后的url

    我需要获取服务器中间件上的 url 使用express js 我用req url但是当 url 开头时 some urlreq url 返回 与req path 有没有办法获取url之后 在express js中 No URL 中以 符号永
  • 如何将文件的元素放入哈希中? -红宝石

    所以我有一个以下形式的文件 Key1 Value1 Key2 Value2 Key3 Value3 用制表符分隔 我的问题是如何打开这个文件并将其放入哈希中 我曾尝试这样做 fp File open file path fp each do
  • 如何使用“子例程引用”作为哈希键

    在 Perl 中 我正在学习如何取消引用 子例程引用 但我似乎无法使用子例程引用作为哈希 键 在下面的示例代码中 我可以创建对子例程 subref 的引用 然后取消引用它以运行子例程 subref 我可以使用引用作为哈希 值 然后轻松取消引
  • PHP 的password_verify() 是否可以抵御极长的密码(DoS 攻击)?

    一般攻击场景 2013 年 Django 存在一个普遍漏洞 攻击者可以通过非常大的密码创建极其密集的 CPU 计算 请参阅此处的安全通知 https www djangoproject com weblog 2013 sep 15 secu
  • Jenkins Hash 的 Python 实现?

    是否存在该方法的原生 Python 实现詹金斯哈希 http burtleburtle net bob hash doobs html算法 我需要一个哈希算法 它接受任意字符串并将其转换为 32 位整数 对于给定的字符串 必须保证跨平台返回
  • 根据哈希值确认文件内容

    我需要 检查完整性 content文件数量 文件将写入 CD DVD 可能会被复制多次 这个想法是识别正确复制的副本 在从 Nero 等中删除它们之后 我对此很陌生 但快速搜索表明Arrays hashCode byte http down
  • 从函数返回哈希值的最佳 Perl 实践是什么?

    我正在考虑将哈希引用传递给函数或从函数返回数据的最佳实践 一方面 仅将输入值传递给函数并仅返回输出变量似乎很直观 然而 在 Perl 中传递哈希值只能通过引用来完成 因此有点混乱 而且似乎更有可能犯错误 另一种方法是在输入变量中传递引用 但
  • 带有可选第一个哈希参数和keyword_args的奇怪方法行为

    我有以下方法 def test first param nil keyword arg nil puts first param first param puts keyword arg keyword arg end 以下所有调用都按照我
  • mysql 使用什么样的哈希?

    我正在编写类似于 phpMyAdmin 的自己的代码 但我需要用户能够使用 mysql 数据库中的用户名和密码登录 我需要知道mysql数据库使用什么样的哈希来存储每个用户的密码 我检查了 dev mysql com 寻找答案 但除了以 开
  • 数字签名(PKCS#7 - 延迟签名)/自应用签名以来文档已被更改或损坏

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

    我对大量文件进行哈希处理 为了避免哈希冲突 我还存储了文件的原始大小 这样 即使存在哈希冲突 文件大小也不太可能相同 这是听起来的声音吗 哈希冲突同样可能是任何大小 还是我需要另一条信息 如果冲突更有可能与原始长度相同 或者 更一般地说 无

随机推荐

  • 如何防止 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 该产品仍在开发中 因此尚未处理过数百万个文件 这显然不够长 无法避免冲突 然而 这是我的问题 如果我使用两种不同的方