2

こんにちはオーバーファーズ!;)

私がしたいこと:

転送されたファイルの整合性を確認することに興味があります。

私がそれにどのようにアプローチしたか:

これにハッシュコードを使用することを検討していましたが、1 つ問題があります。ファイルは非常に大きくなる可能性があるため、ハッシュを繰り返し生成できるようにする必要があります。ファイル全体をメモリにロードできません。

私がこれまでに見たもの:

ハッシュ関数については、murmur3skeinを調査しています。skein で動作させる方法は理解していると思いますが、ビルドしたバージョンは、既知のすべての結果単体テストに失敗します。つぶやきを「連鎖」して有効な結果を得る方法がわかりません。

助言がありますか?

4

2 に答える 2

5

ほとんどのハッシュ アルゴリズムは固定サイズのデータ​​ ブロックで動作します。たとえば、SHA1 または MD5 参照実装を検索できます。これらは「init/loop { update }/finalize」構造を使用して、好きなだけデータを渡すことができます。すべての更新。

たとえば Skein を見ると、リファレンス実装で同じ概念を使用しています。

int  Skein_256_Init  (Skein_256_Ctxt_t *ctx, size_t hashBitLen);
int  Skein_256_Update(Skein_256_Ctxt_t *ctx, const u08b_t *msg, size_t msgByteCnt);
int  Skein_256_Final (Skein_256_Ctxt_t *ctx, u08b_t * hashVal);

データ全体を 1 つのブロックとして渡す必要があるのはなぜだと思いますか? 単純化されたラッパー関数を見ていますか?

于 2011-03-10T22:48:30.673 に答える
1

Crypto++をご覧ください。これは私のお気に入りの暗号化C++ライブラリです。

そして、これがあなたがそれを使うことができる方法です

于 2011-03-10T22:53:25.620 に答える