public static byte[] GetStreamCRC32(Stream stream) { if ( stream == null ) throw new ArgumentNullException("stream"); if ( !stream.CanRead ) throw new ArgumentException("stream is not readable."); stream.Position = 0; Crc32 crc32 = new Crc32(); byte[] buf = new byte[4096]; int len = 0; while ( (len = stream.Read(buf, 0, buf.Length)) != 0 ) { crc32.Update(buf, 0, len); } stream.Position = 0; return crc32.Value; }
public static byte[] GetFileCRC32(string path) { if ( path == null ) throw new ArgumentNullException("path"); Crc32 crc32 = new Crc32(); byte[] buf = new byte[4096]; int len = 0; using ( FileStream fs = new FileStream(path, FileMode.Open) ) { while ( (len = fs.Read(buf, 0, buf.Length)) != 0 ) { crc32.Update(buf, 0, len); } } return crc32.Value; }