当前位置: 首页 > 面试题库 >

Java和哈希算法比较文件

仉姚石
2023-03-14
问题内容

我必须对指纹文件进行匹配才能匹配双峰。在2013年,对Java有何建议?我是否还应该比较文件大小,或者这是不必要的检查?

误报的可能性应该非常接近0

编辑:很多答案,谢谢。如今备份软件的标准是什么?SHA-256?更高?我猜md5不合适吗?


问题答案:

如果假阳性的概率必须 为零 ,而不是“比闪电击中的概率低”,则完全不能使用哈希算法;您必须逐字节比较文件。

值得一提的是,如果您可以使用第三方库,则可以使用Guava使用单行代码逐字节比较两个文件

Files.asByteSource(file1).contentEquals(Files.asByteSource(file2));

它负责打开和关闭文件以及比较的细节。

如果您愿意接受比闪电击中可能性小的误报,那么您可以

Files.hash(file, Hashing.sha1()); // or md5(), or sha256(), or...

它返回一个HashCode,然后您就可以测试它是否与另一个文件的哈希值相等。(该版本还处理了MessageDigest,正确打开和关闭文件等的混乱情况。)



 类似资料:
  • 我使用mitsuhiko的pbkdf2实现进行密码哈希: 此函数返回二进制摘要,然后将其编码在bas64中并保存到数据库中。此外,当用户登录时,Base64字符串被设置为cookie。 此函数用于密码哈希比较: 我想知道在安全性方面,二进制哈希和Base64字符串的比较是否有任何不同?例如,当用户登录时,我会计算提交密码的二进制摘要,从数据库中解码Base64字符串,然后比较两个二进制哈希,但是如

  • 我正在尝试使用Sinatra和BCrypt实现一种看似非常简单的身份验证方法,但显然我遗漏了一些东西... 用户会预先分配一个临时密码,该密码以明文形式存储在DB中。 我根据临时口令进行身份验证,然后创建salt和password_hash,并将它们作为字符串写入db(本例中为mongo)。 为了进行身份验证,我从db和用户口令中获取salt进行比较。 bcrypt::Engine.hash_se

  • 有人能告诉我如何从WooCommerce网络钩子中重新创建哈希以与请求中的“X-WC-Webhook-Signature”标头哈希进行比较吗? 留档指定哈希是从“有效负载”生成的,但我无法生成相同的哈希。 我的API是。NET Core 3.1 我尝试的第一件事: 第二个:

  • 问题内容: 对于我正在开发的应用程序,nodejs需要验证PHP创建的哈希,反之亦然。 问题是,在node.js中测试时,PHP中生成的哈希(通过仅使用PHP 函数的Laravel 类)返回false。 以下node.js脚本: 输出:“ PHP失败的nodejs通过”,而以下PHP脚本: 输出“ PHP通过的nodejs通过的”。 我已经在Ubuntu 14.04.1中使用PHP 5.5.18,

  • 问题内容: 我有两个像下面的哈希图: 键不相同,但值相同,有时值也不相同。 我想找出与比较时不存在的值 但这使我从employeeMap中得到null。 您能帮我解决这个问题吗? 问候托尼 问题答案: 以下是完美运行的代码,比较失败的原因是映射值不同。 如果我们看到日期,则可以清楚地看到差异。 不同于 因为我将其存储为字符串。 谢谢你们的支持以及也投下反对票的人们。 :)托尼

  • 主要内容:哈希表是什么,哈希查找算法哈希查找算法又称 散列查找算法,是一种借助哈希表(散列表)查找目标元素的方法,查找效率最高时对应的时间复杂度为 O(1)。 哈希查找算法适用于大多数场景,既支持在有序序列中查找目标元素,也支持在无序序列中查找目标元素。讲解哈希查找算法之前,我们首先要搞清楚什么是哈希表。 哈希表是什么 哈希表(Hash table)又称 散列表,是一种存储结构,通常用来存储多个元素。 和其它存储结构(线性表、树等)