安全な方法でファイルのチェックサムを作成しようとしています(10GB以上!)。SHA1 + MD5の組み合わせを使用
SHA256は十分安全ですが、このアルゴリズムはプロセスが高価であり、適切ではありません。 まあ私はSHA1とMD5チェックサムの両方が衝突によって安全でないことを知っています。
だから私は、SHA1 + MD5のようにMD5とMD5を組み合わせていると思います。同じMD5とSHA1の両方でファイル(Collision)を同時に取得する方法はないと思います。
SHA1 + MD5をファイルチェックサムに十分に安全に結合していますか?それとも衝突のような攻撃がありますか?
Iアップデート1双方向(BufferstreamとBufferedstreamせず)
public static string GetChecksum(string file)
{
using (FileStream stream = File.OpenRead(file))
{
var sha = new SHA256Managed();
byte[] checksum = sha.ComputeHash(stream);
return BitConverter.ToString(checksum).Replace("-", String.Empty);
}
}
public static string GetChecksumBuffered(Stream stream)
{
using (var bufferedStream = new BufferedStream(stream, 1024 * 32))
{
var sha = new SHA256Managed();
byte[] checksum = sha.ComputeHash(bufferedStream);
return BitConverter.ToString(checksum).Replace("-", String.Empty);
}
}
のC#のモノを使用する: IはSHA1ハッシュ+ MD5ハッシュを意味します。最初にファイルのSHA1を計算し、次にファイルのMD5を計算し、次にこの2つのスティングを一緒に追加します。
アップデート2:
zaph @私は私のコード(C#MONO)を実装述べたように、再び私はhereを読んでいますが、早く彼が言ったように私のコードを作成していないものをに従って!それは4.6 GBのファイルの速度を約12分から約8分にします。しかし、sha1 + md5はこのファイルのために100秒未満です。ですから、私はまだSHA256を代わりに使用するのは適切ではないと思います。
@zaphよく使用しています!私はあなたがLinuxのミントでMono(C#)のデフォルトの実装で言ったことをテストする - 4 GBのファイルの場合は約12分かかります - 108 MBのファイルの場合は19秒かかる....だから何が問題なのですか?私はコアを使用しています7インテルCPU –
あなたの実装は遅くなければなりません。私のCPUは2010 2.8GHzのクアッドコアインテルXeonです。私の2011ラップトップは高速です。ほとんどのIntelプロセッサには暗号操作を高速化するための命令があります。 – zaph
これはリアルタイムで実行していますか? –