1. ホーム
  2. c#

[解決済み] ファイルのMD5チェックサムを計算する

2022-03-14 22:59:22

質問

を使っています。 iTextSharp を使用して、PDF ファイルからテキストを読み取ることができます。しかし、PDFファイルには画像しか入っていないため、テキストを抽出できないことがあります。毎日同じPDFファイルをダウンロードするので、そのPDFが変更されたかどうかを確認したいのです。テキストと更新日時を取得できない場合、PDFファイルからテキストを抽出する方法はありますか? MD5 チェックサムは、ファイルが変更されたかどうかを判断する最も信頼性の高い方法ですか?

もしそうなら、暗号の経験があまりないので、いくつかのコードサンプルをお願いします。

どのように解決するのですか?

簡単です。 システム・セキュリティ・暗号・MD5 :

using (var md5 = MD5.Create())
{
    using (var stream = File.OpenRead(filename))
    {
        return md5.ComputeHash(stream);
    }
}

(私は 実際に 使用されているMD5実装は廃棄する必要はありませんが、それでも私は廃棄すると思います)。

例えばバイト配列をbase64に変換したり、バイトを直接比較したりすることができます。(ただ、配列は Equals . base64を使用すると、正しく動作させるのは簡単ですが、本当にハッシュを比較することだけに興味がある場合は、若干効率が悪くなります)。

ハッシュを文字列で表現する必要がある場合は、次のようにして16進数に変換します。 BitConverter :

static string CalculateMD5(string filename)
{
    using (var md5 = MD5.Create())
    {
        using (var stream = File.OpenRead(filename))
        {
            var hash = md5.ComputeHash(stream);
            return BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant();
        }
    }
}