0

次のアルゴリズムがあります (SHA-1 ハッシュ関数の実装に基づく)。「abc」のハッシュを生成します。結果は、署名されていないchar*ダイジェストです。

#define BYTES "abce"
SHA1* sha1 = new SHA1();
sha1->addBytes( BYTES, strlen( BYTES ) );
unsigned char* digest = sha1->getDigest();

結果ダイジェストを再ハッシュしたいと思います。私は次の方法でこれをやっていますが、うまくいきません。とはchar* S異なるものを定義してい#define BYTES "abce"ますか?

char* S = reinterpret_cast<char*>(digest);
sha1 = new SHA1();
sha1->addBytes( S, strlen( S ) );           
unsigned char* digest1 = sha1->getDigest();
4

1 に答える 1

5

strlenC スタイルの文字列以外には使用しないでください。

          sha1->addBytes( S, strlen( S ) );         

それは意味がありません。おそらく、SHA ダイジェストのサイズである 20 が必要です。

于 2012-09-10T15:32:24.590 に答える