私はC++で1つのEXEファイルで構成される小さなアプリケーションを書いています。md5sum和自体を含むファイルですか?
実行可能ファイル自体のmd5sumの "about"ダイアログに入れたいと思います。これは、オンザフライで計算するのではなく、実行可能ファイルに静的に埋め込む必要があります(16進エディタから見ることができます)。
私はC++で1つのEXEファイルで構成される小さなアプリケーションを書いています。md5sum和自体を含むファイルですか?
実行可能ファイル自体のmd5sumの "about"ダイアログに入れたいと思います。これは、オンザフライで計算するのではなく、実行可能ファイルに静的に埋め込む必要があります(16進エディタから見ることができます)。
@Shi & @matthewdanielは既に言いましたが、これは直接行うことはできません。
しかし回避策のカップル可能です:
良い提案、私はそれが不可能であることを知っている:/ –
これはできません。
バイナリにmd5ハッシュを入力すると、バイナリが変更されるため、md5ハッシュも変更されます。新しいものを作成してバイナリに追加しようとすると、バイナリは再び変更されます。
ハッシュをファイルに入れ、そのファイルを読み込んでその内容を表示するのが最適です。
もう1つの方法は、バイナリのmd5ハッシュを作成し、それを実行可能ファイルに追加することです。値を取得するには、バイナリの最後の32バイトを読み込み、それをmd5として表示します。もちろん、完全な実行可能ファイルのハッシュを作成すると、ハッシュと一致しません。最後の32バイトを除いた実行ファイルのハッシュを作成する必要があります。
128ビットmd5ハッシュを生フォーマット(ベース16ではなく256のベース)で保存する場合は、16バイトしか必要ありません。
ファイルにmd5を追加すると、ファイルには別のmd5が含まれます。ファイル自体にmd5を入れる方法はありません。
ファイルの内容自体は変更できないものとします(回答に記載された理由により)できません。ファイルの内容を変更することができれば(例えば、ファイル自体が同じである必要がない場合にのみ表示できます)、*非常に難しい*場合でも、そのようなファイルを作成することができます。 "Wang e.t. all"の研究を参照してください。 –
ハッシュを計算するときに、含まれているハッシュをスキップするためのメカニズムが必要です。そして、より良いハッシュ関数md5を使用することを検討する必要があります。 – CodesInChaos
@pst:どの論文を参考にしていますか? –