の文字列(文字列化されたJSONデータ)ユニークなハッシュを計算する必要があります。多くの場合、新しい行がドキュメントに追加され、時には一部の行が削除され、ドキュメントの完全に新しいハッシュになります。SHA1ハッシュを結合して新しいハッシュを生成する
究極の目的は、ハッシュを使用するだけで同一のドキュメントを識別できることです。もちろん
、各変更は私に希望のユニークなハッシュを与えるだろうが、また、計算上高価だろう後に文書全体のためのSHA1ハッシュを計算する - 特にちょうど〜40のバイトを5に追加されている状況で、すべてのデータがSHA1計算を再度実行する必要があります。
私は新しいハッシュを計算するのにかかる時間を短縮できる解決策を探しています。
問題の性質/要件の要約:
各ラインは- )
- 単一ラインの長さは通常小さいが、文書全体が(アルゴリズムは添付データのために最適化することができる
- 大きいかもしれない、すなわちDELET INGのデータであっても
私の現在の考え方は、個別に各1ライン分のSHA1(または任意)のハッシュを計算することで、その後XORハッシュ一緒に)このような場合には、ゼロからの再起動が必要な場合があります。それはすべての要件を満たす必要があります。新しいラインについては、私はちょうどそのラインのSHA1を計算し、それを既知の和とXORします。私は「XOR演算のハッシュは、まだ正確に文書(すなわちを識別するのに十分な強さかどう分からない
- ...ので
はしかし、私は疑問に思います。かなり高い可能性があります不必要な衝突?)
- 短い線のSHA1ハッシュの多くを計算するには、少なくとも初期化時に(それ自身の計算コストが高いかもしれません)
誰もがこれらの問題にいくつかの光を当てることができますか?
また、SHA1(または同様のハッシュ)を使用して、追加データ(old hash
+ appended data
= new hash
)の新しいハッシュを迅速に生成することは可能でしょうか?
どのような 'sha1'js実装を使用していますか? –
この問題は重要ではありません。なぜなら、ハッシュが文書を「一意に」識別するのに十分強い限り、SHA1である必要はないからです。しかし、あなたの質問に答えるために、私は通常[rusha](https://www.npmjs.com/package/rusha)のlibを使用しています。 –