私はOpenSSLライブラリを使ってC言語で書いています。Cで大きなファイルのMD5ハッシュを計算するには?
md5を使用して大きなファイルのハッシュを計算するにはどうすればよいですか?
私が知っているように、ファイル全体をchar配列としてRAMにロードしてから、ハッシュ関数を呼び出す必要があります。しかし、ファイルの長さが約4Gbの場合はどうなりますか?悪い考えのように聞こえる。
SOLVED:askovpenのおかげで、私はバグを発見しました。私は、あなたが一度にメモリ内のファイル全体をロードする必要はありません
while ((bytes = fread (data, 1, 1024, inFile)) != 0)
MD5_Update (&mdContext, data, 1024);
ない
while ((bytes = fread (data, 1, 1024, inFile)) != 0)
MD5_Update (&mdContext, data, bytes);
私はそれの必要性を知りたいのですか?長期間プログラムをブロックする可能性があるため、スレッドセーフではない場合は、確かに悪い考えかもしれません。ユーザー – crockpotveggies
ファイルを暗号化することは、MD5のようなハッシュ関数を使用してハッシュすることと同じではありません。あなたは本当にハッシュを意味しますか、またはファイルを暗号化しますか? – Oleksi
MD5はストリームベースです。一度に4GB全体をメモリにロードする必要はありません。チャンクで読み込んでください。 –