【问题标题】:Hashes of various types of files各种类型文件的哈希
【发布时间】:2018-09-04 14:02:27
【问题描述】:

我需要使用 java 应用程序获取存档中各种类型文件的哈希值,例如office 文件、jpeg 文件、xmls 等。我知道我可以使用 MessageDigest 计算哈希值。但是,如果仅对特定类型的文件采用哈希,是否有任何建议。如果我有一些大的 .swf 文件(闪存文件),是否也可以获取这些文件的哈希值?还有一种推荐的方法来组织哈希。例如,如果我有一个 zip 文件,并且有 zip 文件中所有文件的哈希值,是否有推荐的组织方式,即哈希树。或者 zip 文件本身的哈希值是否足够好?

【问题讨论】:

  • 你需要加密还是非加密哈希?
  • @VictorGubin 我正在寻找加密哈希,以便保证唯一性和抗冲突。
  • 如果您不需要加密级别的安全哈希,那么更简单(更快)的非加密哈希可能会更好。对于基本的抗碰撞性,只需增加散列的大小。我通常建议将 FNV 哈希用于非加密用途:它很简单,并且有多种大小。
  • @rossum 我知道非加密哈希会更快。但我的问题更多是关于组织收集这些哈希的任何建议。假设一个档案有 100 个文件,我对所有这 100 个文件进行哈希处理,保留这 100 个哈希的最佳方法是什么。
  • 这取决于。您多久添加/删除/修改/访问条目?不同的存储方式更适合不同的用途。例如,对条目的快速访问可能需要大量索引,因此由于索引工作而导致添加和删除速度缓慢。您的系统是否有可以使用的数据库?否则,请查看通常的集合:ArrayListHashSet 等,看看哪个最适合您使用数据的方式。

标签: java security hash cryptography


【解决方案1】:

如果您需要一个抗冲突的散列,请使用加密散列。如果您尝试创建文件标识符,则需要抗冲突哈希。

文件类型对选择抗冲突哈希没有影响。

SHA-256 是此类用途的良好哈希候选者。

【讨论】:

  • 同意 SHA-256 可能是最好的加密哈希。
  • SHA-512 在 64 位机器上更快(当然,如果使用 64 位指令实现)。
猜你喜欢
  • 2016-04-06
  • 2011-11-13
  • 2012-10-09
  • 1970-01-01
  • 2016-10-05
  • 2018-12-27
  • 1970-01-01
  • 2013-11-13
  • 1970-01-01
相关资源
最近更新 更多