Java 各种类型文件的哈希

Java 各种类型文件的哈希,java,security,hash,cryptography,Java,Security,Hash,Cryptography,我需要使用java应用程序对归档文件中的各种类型的文件进行哈希,例如office文件、jpeg文件、XML等。我知道我可以使用MessageDigest计算哈希。但是,如果只对特定类型的文件使用哈希,是否有任何建议。如果我有一些大的.swf文件(flash文件),也可以对它们进行哈希处理吗?还有一种推荐的方法来组织哈希。例如,如果我有一个zip文件,并且有zip文件中所有文件的哈希,是否有一种推荐的组织方式,即哈希树。或者zip文件本身的散列(如果足够好)?如果需要抗冲突的散列,请使用加密散列。

我需要使用java应用程序对归档文件中的各种类型的文件进行哈希,例如office文件、jpeg文件、XML等。我知道我可以使用MessageDigest计算哈希。但是,如果只对特定类型的文件使用哈希,是否有任何建议。如果我有一些大的.swf文件(flash文件),也可以对它们进行哈希处理吗?还有一种推荐的方法来组织哈希。例如,如果我有一个zip文件,并且有zip文件中所有文件的哈希,是否有一种推荐的组织方式,即哈希树。或者zip文件本身的散列(如果足够好)?

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

文件类型在抗冲突散列的选择上没有区别


SHA-256是这种用途的一个很好的散列候选者。

您需要加密散列还是非加密散列?@VictorGubin我正在寻找加密散列,这样可以保证唯一性和抗冲突。如果您不需要加密级别的安全散列,那么更简单(更快)的非加密散列可能更好。对于基本的抗冲突性,只需增加散列的大小。我通常建议使用非加密哈希:它很简单,大小不一。@rossum我知道非加密哈希会更快。但我的问题更多的是关于组织这些散列集合的任何建议。假设一个归档文件有100个文件,我对所有这100个文件进行散列,保留这100个散列的最佳方法是什么。这取决于。您多长时间添加/删除/修改/访问一次条目?不同的存储方法适合不同的用途。例如,对条目的快速访问可能需要大量的索引,因此由于索引的工作,添加和删除速度较慢。您的系统是否有可以使用的数据库?否则,请查看通常的集合:
ArrayList
HashSet
等,看看哪种最适合您使用数据的方式。同意SHA-256可能是最好的加密哈希。SHA-512在64位机器上更快(当然,如果使用64位指令实现)。