public static CryptoResult ReadFile(string path, CryptoProvider provider) { byte[] buffer; using (FileStream fileStream = File.OpenRead(path)) { using (GZipStream gzipStream = new GZipStream((Stream)fileStream, CompressionMode.Decompress, false)) { using (MemoryStream memoryStream = new MemoryStream()) { gzipStream.CopyTo((Stream)memoryStream); buffer = memoryStream.GetBuffer(); } } } string str1 = Encoding.UTF8.GetString(buffer, 0, buffer.Length); int length = str1.IndexOf("\n", StringComparison.Ordinal); string str2 = str1.Substring(length + 1); if (length == -1) { return(new CryptoResult(str2, false)); } string strB = str1.Substring(0, length); bool isValid = string.Compare(provider.GetSignature(str2, false), strB, StringComparison.Ordinal) == 0; return(new CryptoResult(str2, isValid)); }
public static void Write(string path, string data, bool overwrite, CryptoProvider provider) { FileMode mode = overwrite ? FileMode.Create : FileMode.CreateNew; string signature = provider.GetSignature(data, false); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(signature); stringBuilder.Append('\n'); stringBuilder.Append(data); byte[] bytes = Encoding.UTF8.GetBytes(stringBuilder.ToString()); using (FileStream fileStream = File.Open(path, mode)) { using (GZipStream gzipStream = new GZipStream((Stream)fileStream, CompressionMode.Compress, false)) gzipStream.Write(bytes, 0, bytes.Length); } }