コード例 #1
0
        public void Krabouille_stream_on_file(string pwd, int bufferSize)
        {
            string original    = ThisFilePath();
            string krabouilled = $"{original}.{pwd}.krab";
            string readBack    = krabouilled + ".txt";

            // original => krabouilled (.krab)
            using (var o = new FileStream(original, FileMode.Open, FileAccess.Read, FileShare.None))
                using (var target = new FileStream(krabouilled, FileMode.Create, FileAccess.Write, FileShare.None))
                    using (var k = new KrabouilleStream(target, KrabouilleMode.Krabouille, pwd))
                    {
                        o.CopyTo(k, bufferSize);
                    }

            File.ReadAllBytes(original).Should().NotBeEquivalentTo(File.ReadAllBytes(krabouilled));

            // krabouilled => readBack (.txt)
            using (var source = new FileStream(krabouilled, FileMode.Open, FileAccess.Read))
                using (var target = new FileStream(readBack, FileMode.Create, FileAccess.Write))
                    using (var uk = new KrabouilleStream(source, KrabouilleMode.Unkrabouille, pwd))
                    {
                        uk.CopyTo(target, bufferSize + 1);
                    }

            File.ReadAllBytes(original).Should().BeEquivalentTo(File.ReadAllBytes(readBack));
        }
コード例 #2
0
 byte[] Write(byte[] data, string password)
 {
     using (var m = new MemoryStream())
     {
         using (var k = new KrabouilleStream(m, KrabouilleMode.Krabouille, password))
         {
             k.Write(data, 0, data.Length);
             k.Flush();
         }
         return(m.ToArray());
     }
 }
コード例 #3
0
 void DoUnkrabouille(string crypted, string restored, string passPhrase)
 {
     using (var o = new FileStream(crypted, FileMode.Open, FileAccess.Read))
         using (var t = new FileStream(restored, FileMode.Create, FileAccess.Write))
             using (var uk = new KrabouilleStream(o, passPhrase, KrabouilleMode.Unkrabouille))
             {
                 byte[] buffer = new byte[4096];
                 int    len;
                 do
                 {
                     len = uk.Read(buffer, 0, buffer.Length);
                     t.Write(buffer, 0, len);
                 }while (len == buffer.Length);
             }
 }
コード例 #4
0
 void DoKrabouille(string origin, string crypted, string passPhrase)
 {
     using (var o = new FileStream(origin, FileMode.Open, FileAccess.Read))
         using (var t = new FileStream(crypted, FileMode.Create, FileAccess.Write))
             using (var k = new KrabouilleStream(t, passPhrase, KrabouilleMode.Krabouille))
             {
                 byte[] buffer = new byte[4096];
                 int    len;
                 do
                 {
                     len = o.Read(buffer, 0, buffer.Length);
                     k.Write(buffer, 0, len);
                 }while (len == buffer.Length);
             }
 }
コード例 #5
0
        byte[] Read(byte[] data, string password)
        {
            List <byte> result = new List <byte>();

            using (var m = new MemoryStream(data))
            {
                byte[] buffer = new byte[128];
                using (var uk = new KrabouilleStream(m, KrabouilleMode.Unkrabouille, password))
                {
                    int nbRead;
                    while ((nbRead = uk.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        for (int i = 0; i < nbRead; ++i)
                        {
                            result.Add(buffer[i]);
                        }
                    }
                }
                return(result.ToArray());
            }
        }