Exemple #1
0
        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));
        }
Exemple #2
0
        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);
            }
        }