我正在尝试计算整个目录结构的SHA-1校验和。
到目前为止,我所做的是递归地计算每个常规文件的SHA-1,并将所有校验和附加在一起。问题是,这使得计算依赖于遍历文件的顺序
也就是说,如果我有一个包含文件的文件夹
file1.dat file2.dat
另一个文件夹包含相同的文件,但排序方式为
file2.dat file1.dat
这将计算不同的校验和。
如何使SHA-1计算顺序独立?
谢谢!
发布于 2012-12-13 19:04:54
你至少有两个选择:
数据。
就我个人而言,我会选择第一种,这是快速和简单的。
发布于 2012-12-13 18:56:12
在计算SHA-1之前,尝试对从File.list获得的文件名进行排序,或者对File.listFiles的File[]进行排序,文件是可比较的。Arrays.sort就足够了。请注意,File.list / File.listFile返回的项没有特定的顺序,尽管它们可能看起来是有序的。
发布于 2012-12-13 18:59:07
既然您已经准备好了散列计算算法,那么您只需为每个目录添加一个集合(或任何其他不采用重要元素顺序的数据结构)中的所有散列,然后检查这些集合是否相等
Set Class
https://stackoverflow.com/questions/13858223
复制相似问题