私は、データを識別するいくつか(<10)の情報を取得し、それらを組み合わせて1つのハッシュを生成することにより、Key-Valueデータのキーを作成しています。このために、私はCryptoPPのSHA256::Update
関数を使用してきました。この関数を使用すると、一度にピースを追加できます。
#include "sha.h"
...
byte outputBuf[CryptoPP::SHA256::DIGESTSIZE];
CryptoPP::SHA256 hash;
hash.Update(pData1, lenData1); // pData* can point to int, double or std::string
hash.Update(pData2, lenData2);
...
hash.Final(outputBuf);
呼び出しの順序が重要であることに気づきましたUpdate
(つまり、2つのUpdate
ステートメントの順序を変更すると、異なるハッシュが取得されます)。代わりに、これを注文に依存しないようにしたいと思います。それで:
- CryptoPPはこれを行う方法を提供しますか?
- そうでない場合は、別のアプローチを提案できますか?
xor
これまでのところ、パラメータを組み合わせるために使用するとうまくいくと思います。1つの問題は、2つのデータが同じである場合、それらがキャンセルされることです。これに関する問題を予見できますか?