

ファイルの同一を確認するのにファイルのハッシュ値を求めて使おうと思っています。  
Linuxであれば

[code]

    md5sum FILE
    
[/code]

でハッシュ値を求められますが、大きなファイルになるとハッシュ値を求めるにも時間がかかります。  
ハードウェア処理などで高速化する方法などありませんでしょうか？  
目的はハッシュ値の高速化なので手法は問いません。OSはCentOS7を想定しています。

ご存知の方、ご教示お願いします。


CC BY-SA 3.0
2017-07-18T15:32:25.793
36476
2017-08-04T04:44:09.040
2017-08-04T04:44:09.040
19110
8593
question
centos ハッシュ md5sum md5
高速にファイルのハッシュ値を求めるには


ハッシュ値を求めるプログラムを書いたとして、計算資源的にボトルネックになるのは disk I/O だろうと想像されます。 ハッシュ値を求めるのに特化した
disk I/O サポートは、ちょっと想像できないです。なので、質問者様が求めている高速化は、何かしら視点を変えない限り、難しいのでは、と思っています。

(例えば: ファイルの書き込み時に hash も同時に計算してしまう、など)


CC BY-SA 3.0
2017-07-18T16:48:08.750
36479
2017-07-18T16:48:08.750
754
36476
answer


GPUやFPGA、専用ASICを用いてハッシュ計算を高速化する手法はありますが、コマンド一発でインストールして使えるようなものではありません。

ファイルの同一を確認するのであれば、ハッシュ値を用いるのは必ずしも得策ではありません。ファイルそのものを比較すれば、ファイルサイズや一部のブロックを読むだけで「同一でない」と確認できる可能性がありますが、ハッシュ値の比較では必ずファイル全体を読み込む必要があります。

ファイルの比較についてハッシュ値を用いるのが有効なのは、

  * 比較対象のファイルが手元にない
  * 多数のファイルを相互比較するなど、繰り返し処理が必要

のような場合、つまり「その場で計算するハッシュ値は多くても1つで、あとはあらかじめ計算済みのハッシュ値と比較する」ような場合です。このような使い方であればハッシュ値の計算量はさほど問題にならないはずです。


CC BY-SA 3.0
2017-07-19T02:00:03.857
36486
2017-07-19T02:29:45.087
2017-07-19T02:29:45.087
5793
5793
36476
answer