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)); }
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()); } }
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); } }
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); } }
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()); } }