Пример #1
0
 private void button4_Click(object sender, EventArgs e)
 {
     alg.setLetters(textBox1.Text);
     alg.setKey(textBox4.Text);
     alg.setFile("C:\\Users\\Nemanja\\Desktop\\New Text Document.txt");
     alg.makeDictionary();
     alg.algStartE();
 }
 public void consumerWork()
 {
     while (true)
     {
         //while (!form.listIsEmpty())
         while (red.Count != 0)
         {
             if (form.getIndex() == 0)
             {
                 //string s = form.getListItem();
                 string s;
                 lock (thislock)
                 {
                     s = red.Dequeue();
                 }
                 StreamReader plaintext;
                 try
                 {
                     plaintext = new StreamReader(s);
                 }
                 catch (IOException)
                 {
                     Thread.Sleep(3000);
                     plaintext = new StreamReader(s);
                 }
                 char[]       sp       = { '\\', '\\' };
                 string[]     s1       = s.Split(sp);
                 int          br       = s1.Length - 1;
                 StreamWriter saveWork = File.AppendText(form.getSourceFolder() + "\\resume.dat");
                 saveWork.WriteLine(s);
                 saveWork.Close();
                 string[] s2 = s1[br].Split('.');
                 string   s3 = "";
                 for (int i = 0; i < s2.Length; i++)
                 {
                     if (s2[i] != "txt")
                     {
                         s3 += s2[i];
                     }
                 }
                 s3 += ".code";
                 StreamWriter coded = new StreamWriter(form.getDestinationFolder() + "\\" + s3);
                 alg.setFile(s);
                 alg.setKey(form.getKey());
                 alg.setLetters(form.getLetters());
                 coded.WriteLine(alg.algStartE());
                 coded.Close();
                 plaintext.Close();
                 form.deleteListItem(s);
             }
             else if (form.getIndex() == 1)
             {
                 string s;
                 lock (thislock)
                 {
                     s = red.Dequeue();
                 }
                 form.deleteListItem(s);
                 StreamWriter saveWork = File.AppendText(form.getSourceFolder() + "\\resume.dat");
                 saveWork.WriteLine(s);
                 saveWork.Close();
                 GetKey();
                 char[]   sp     = { '\\', '\\' };
                 string[] s1     = s.Split(sp);
                 int      br     = s1.Length - 1;
                 string[] s2     = s1[br].Split('.');
                 string   s3     = s2[s2.Length - 2];
                 byte[]   result = new byte[15];
                 using (BinaryReader reader = new BinaryReader(new FileStream(s, FileMode.Open)))
                 {
                     using (BinaryWriter writer = new BinaryWriter(File.Open(form.getDestinationFolder() + "\\" + s3 + ".code", FileMode.Create)))
                     {
                         while (reader.BaseStream.Position != reader.BaseStream.Length)
                         {
                             for (int i = 0; i < 15; i++)
                             {
                                 filebytes[i] = 0x00;
                             }
                             reader.Read(filebytes, 0, 15);
                             for (int i = 0; i < 15; i++)
                             {
                                 result[i] = 0x00;
                                 result[i] = (byte)(filebytes[i] ^ keystream1[i]);
                                 if (result[i] != 0x00)
                                 {
                                     writer.Write(result[i]);
                                 }
                             }
                         }
                     }
                 }
             }
             else if (form.getIndex() == 2)
             {
                 string s;
                 lock (thislock)
                 {
                     s = red.Dequeue();
                 }
                 form.deleteListItem(s);
                 StreamWriter saveWork = File.AppendText(form.getSourceFolder() + "\\resume.dat");
                 saveWork.WriteLine(s);
                 saveWork.Close();
                 uint[] kljuc = new uint[4];
                 kljuc[0] = 0x2b;
                 kljuc[1] = 0x3a;
                 kljuc[2] = 0x4c;
                 kljuc[3] = 0x1d;
                 char[]   sp     = { '\\', '\\' };
                 string[] s1     = s.Split(sp);
                 int      br     = s1.Length - 1;
                 string[] s2     = s1[br].Split('.');
                 string   s3     = s2[s2.Length - 2];
                 byte[]   result = new byte[8];
                 iv = Encoding.ASCII.GetBytes(form.getKey());
                 using (BinaryReader reader = new BinaryReader(new FileStream(s, FileMode.Open)))
                 {
                     using (BinaryWriter writer = new BinaryWriter(File.Open(form.getDestinationFolder() + "\\" + s3 + ".code", FileMode.Create)))
                     {
                         while (reader.BaseStream.Position != reader.BaseStream.Length)
                         {
                             for (int i = 0; i < 8; i++)
                             {
                                 teabytes[i] = 0x00;
                             }
                             reader.Read(teabytes, 0, 8);
                             for (int i = 0; i < 8; i++)
                             {
                                 result[i] = 0x00;
                                 result[i] = (byte)(teabytes[i] ^ iv[i]);
                             }
                             uint[] resultcon = new uint[2];
                             resultcon[0] = BitConverter.ToUInt32(result, 0);
                             resultcon[1] = BitConverter.ToUInt32(result, 4);
                             iv           = alg3.EncodeTEA(resultcon, kljuc).SelectMany(BitConverter.GetBytes).ToArray();
                             //writer.Write(alg3.EncodeTEA(resultcon, kljuc).SelectMany(BitConverter.GetBytes).ToArray());
                             writer.Write(iv);
                             for (int i = 0; i < 8; i++)
                             {
                                 iv[i] = (byte)(iv[i] ^ teabytes[i]);
                             }
                         }
                     }
                 }
             }
             else
             {
                 string s;
                 lock (thislock)
                 {
                     s = red.Dequeue();
                 }
                 form.deleteListItem(s);
                 StreamWriter saveWork = File.AppendText(form.getSourceFolder() + "\\resume.dat");
                 saveWork.WriteLine(s);
                 saveWork.Close();
                 uint[] kljuc = new uint[4];
                 kljuc[0] = 0x2b;
                 kljuc[1] = 0x3a;
                 kljuc[2] = 0x4c;
                 kljuc[3] = 0x1d;
                 char[]   sp     = { '\\', '\\' };
                 string[] s1     = s.Split(sp);
                 int      br     = s1.Length - 1;
                 string[] s2     = s1[br].Split('.');
                 string   s3     = s2[s2.Length - 2];
                 byte[]   result = new byte[8];
                 iv = Encoding.ASCII.GetBytes(form.getKey());
                 using (BinaryReader reader = new BinaryReader(new FileStream(s, FileMode.Open)))
                 {
                     using (BinaryWriter writer = new BinaryWriter(File.Open(form.getDestinationFolder() + "\\" + s3 + ".code", FileMode.Create)))
                     {
                         while (reader.BaseStream.Position != reader.BaseStream.Length)
                         {
                             for (int i = 0; i < 8; i++)
                             {
                                 teabytes[i] = 0x00;
                             }
                             reader.Read(teabytes, 0, 8);
                             for (int i = 0; i < 8; i++)
                             {
                                 result[i] = 0x00;
                                 result[i] = (byte)(teabytes[i] ^ iv[i]);
                             }
                             uint[] resultcon = new uint[2];
                             resultcon[0] = BitConverter.ToUInt32(result, 0);
                             resultcon[1] = BitConverter.ToUInt32(result, 4);
                             iv           = alg3.EncodeXTEA(resultcon, kljuc).SelectMany(BitConverter.GetBytes).ToArray();
                             //writer.Write(alg3.EncodeTEA(resultcon, kljuc).SelectMany(BitConverter.GetBytes).ToArray());
                             writer.Write(iv);
                             for (int i = 0; i < 8; i++)
                             {
                                 iv[i] = (byte)(iv[i] ^ teabytes[i]);
                             }
                         }
                     }
                 }
             }
         }
     }
 }