0

メッセージを送信するときにメッセージ識別子として使用される 32 ビット (十分に一意) の値を生成するハッシュ関数を実装する必要があります。私はシーケンス番号を維持し、他のいくつかの変数とともにそれを増やし続け、それらを合計して合計のハッシュを取得したいと考えています (これには MD5 を使用し、出力の最初の 32 ビットを選択する予定です)。ただし、Linux の MD5 関数は文字列入力しか受け付けないことがわかります。

MD5((unsigned char*)data, strlen(data), result);

「合計」を sprintf してからハッシュを計算することを考えましたが、「合計」の数値の MD5 を直接計算する関数があるかどうか知りたいですか?

4

1 に答える 1

2

unsigned char *文字列または null で終わる文字列を意味しません。少なくともこの文脈ではそうではありません。これは、値の制限がまったくない N 個の 8 ビット ワードへの単なるポインタです。snprintfそのため、データを ASCII 文字列に変換するために、そのようなものを用意する必要はありません。それが役立つ場合は、ここにツールのソースがありmd5sumます。

于 2012-10-13T23:34:52.510 に答える