Advertisement
Guest User

Task 4

a guest
May 24th, 2015
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.48 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using System.IO;
  11.  
  12. namespace Bez3
  13. {
  14.     public partial class Form1 : Form
  15.     {
  16.         public Int64 rnd, s, b, a, c; //ранд
  17.         public Int64 m = (int)byte.MaxValue + 1;
  18.  
  19.         public Form1()
  20.         {
  21.             InitializeComponent();
  22.             gener();//генерируем новые значения
  23.         }
  24.  
  25.         //генерация нового случ
  26.         public Int64 rand(Int64 c)
  27.         {
  28.             return (a * c + b) % m;
  29.         }
  30.  
  31.         //Криптографическая часть
  32.         public byte[] ShifMASH(byte[] s, Int64[] k)
  33.         {//создаем выходной массив
  34.             byte[] res = new byte[s.Length];
  35.             //зашифровываем
  36.             for (int i = 0; i < s.Length; i++)
  37.             {
  38.                 byte b = Convert.ToByte(k[i + 1]);
  39.                 b ^= s[i];
  40.                 res[i] = b;
  41.             }
  42.  
  43.             return res;
  44.         }
  45.  
  46.         //смена параметров
  47.         private void button1_Click(object sender, EventArgs e)
  48.         {
  49.             gener();
  50.         }
  51.  
  52.         //generator параметров
  53.         public void gener()
  54.         {
  55.             rnd = System.DateTime.Now.Millisecond % System.DateTime.Now.Ticks;
  56.             b = System.DateTime.Now.Ticks % (System.DateTime.Now.Millisecond + 340);
  57.             a = System.DateTime.Now.Ticks % System.DateTime.Now.Minute * System.DateTime.Now.Millisecond;
  58.  
  59.             if (b < 0)//проверка b
  60.             {
  61.                 b = 12;
  62.             }
  63.             if (a < 0)//проверка а
  64.             {
  65.                 a = 21;
  66.             }
  67.  
  68.             if (b % 2 == 0)
  69.             {
  70.                 b++;
  71.             }
  72.             while (a % 4 != 1)
  73.             {
  74.                 a--;
  75.                 if (a < 0)
  76.                 {
  77.                     a = 5;
  78.                 }
  79.             }
  80.             while (a >= m)
  81.             {
  82.                 a = a / 10;
  83.             }
  84.             while(b >= m)
  85.             {
  86.                 b = b / 10;
  87.             }
  88.             while (rnd >= m)
  89.             {  
  90.                 rnd = rnd / 10;
  91.             }
  92.             //вывод
  93.             textBox3.Text = "a= " + a.ToString() + "\r\n" + "b= " + b.ToString() + "\r\n" + "rnd= " + rnd.ToString();
  94.         }
  95.        
  96.         //сохранить параметры в заданные файл
  97.         private void button2_Click(object sender, EventArgs e)
  98.         {
  99.             if (TextFileN.TextLength != 0)
  100.             {
  101.                 FileInfo file = new FileInfo("C:\\Users\\Семён\\Desktop\\Work4DATA\\" + TextFileN.Text + ".key");
  102.                 //если файл сздан то вопрос на пересоздание
  103.                 if (file.Exists)
  104.                 {
  105.                     DialogResult result = MessageBox.Show("Файл с таким именем уже существует", "Заменить?", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
  106.                     if (result == DialogResult.No)
  107.                     {
  108.                         return;
  109.                     }
  110.                 }
  111.                 //записываем
  112.                 StreamWriter sw = new StreamWriter(File.Open("C:\\Users\\Семён\\Desktop\\Work4DATA\\" + TextFileN.Text + ".key", FileMode.Create));
  113.                 sw.WriteLine(a.ToString());
  114.                 sw.WriteLine(b.ToString());
  115.                 sw.WriteLine(rnd.ToString());
  116.                 sw.Close();
  117.             }
  118.             else
  119.             {
  120.                 MessageBox.Show("Пусто тут");
  121.                 return;
  122.             }
  123.         }
  124.        
  125.         //считываем параметры из файла
  126.         private void button3_Click(object sender, EventArgs e)
  127.         {
  128.             if (TextFileM.TextLength != 0)
  129.             {
  130.                 FileInfo file = new FileInfo("C:\\Users\\Семён\\Desktop\\Work4DATA\\" + TextFileM.Text + ".key");
  131.                 if (file.Exists == false)
  132.                 {
  133.                     MessageBox.Show(TextFileM.Text + " не существует!");
  134.                     return;
  135.                 }
  136.                 StreamReader sr = new StreamReader(file.ToString());
  137.                 a = Int32.Parse(sr.ReadLine());
  138.                 b = Int32.Parse(sr.ReadLine());
  139.                 rnd = Int32.Parse(sr.ReadLine());
  140.                 textBox3.Text = "a= " + a.ToString() + "\r\n" + "b= " + b.ToString() + "\r\n" + "rnd= " + rnd.ToString();
  141.                 sr.Close();
  142.             }
  143.             else
  144.             {
  145.                 MessageBox.Show("Пусто тут");
  146.                 return;
  147.             }
  148.  
  149.         }
  150.  
  151.         //(За/Рас)шифровать
  152.         private void button4_Click(object sender, EventArgs e)
  153.         {//открыть файл исходный
  154.             FileInfo file_in = new FileInfo("C:\\Users\\Семён\\Desktop\\Work4DATA\\" + textFileIN.Text + ".txt");
  155.             if (file_in.Exists == false)
  156.             {
  157.                 MessageBox.Show(textFileIN.Text + " не существует!");
  158.                 return;
  159.             }
  160.             //создаем дискриптор
  161.             BinaryReader br = new BinaryReader(file_in.OpenRead());
  162.             byte[] TIN = new byte[file_in.Length];
  163.             //textBox9.Text = file.Length.ToString() + " Байт";
  164.             //считываем все из файла в b
  165.             TIN = br.ReadBytes(TIN.Length);
  166.             br.Close();
  167.             //открыть файл результат
  168.             FileInfo file_out = new FileInfo("C:\\Users\\Семён\\Desktop\\Work4DATA\\" + textFileOUT.Text + ".txt");
  169.             if (file_out.Exists)
  170.             {
  171.                 DialogResult result = MessageBox.Show("Файл с таким именем уже существует", "Заменить?", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
  172.                 if (result == DialogResult.No)
  173.                 {
  174.                     return;
  175.                 }
  176.             }
  177.             BinaryWriter bw = new BinaryWriter(File.Open("C:\\Users\\Семён\\Desktop\\Work4DATA\\" + textFileOUT.Text + ".txt", FileMode.Create));
  178.             //созд массив длинной в кол байт
  179.             Int64[] c = new Int64[TIN.Length + 1];
  180.             //сохр первое число
  181.             c[0] = rnd;
  182.             //заполняем массив случ числами
  183.             for (int i = 1; i <= TIN.Length; i++)
  184.             {
  185.                 c[i] = rand(c[i - 1]);
  186.             }
  187.             //заводим флаг времени
  188.             DateTime time1 = DateTime.Now;
  189.             byte[] fout = ShifMASH(TIN, c);
  190.             //флаг результата
  191.             DateTime time2 = DateTime.Now;
  192.             bw.Write(fout);
  193.             textBox1.Text = (time2 - time1).Milliseconds.ToString() + " мс";
  194.             bw.Close();
  195.         }
  196.         //поменяет местами
  197.         private void button5_Click(object sender, EventArgs e)
  198.         {
  199.             string s = textFileIN.Text;
  200.             textFileIN.Text = textFileOUT.Text;
  201.             textFileOUT.Text = s;
  202.         }
  203.  
  204.         private void Form1_Load(object sender, EventArgs e)
  205.         {
  206.  
  207.         }
  208.  
  209.  
  210.     }
  211. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement