Beispiel #1
0
        /// <summary>
        /// Возвращает юзера из пакета
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public User getUser(byte[] data)
        {
            string message = Encoding.GetEncoding(866).GetString(data); //Декодируем байты в текст

            Stribog stribog = new Stribog(Stribog.lengthHash.Length256);

            User user = JsonConvert.DeserializeObject <User>(message); //Десериализуем данные из формата Json в класс User

            user.key = stribog.GetHash(user.key);

            return(user);
        }
Beispiel #2
0
        /// <summary>
        /// Подключение к серверу
        /// </summary>
        /// <param name="mode"></param>
        private void Connect(string mode)
        {
            //Записываем данные с текстбоксов в кеш программы для сохранения
            Properties.Settings.Default.Address  = textBox3.Text;
            Properties.Settings.Default.Port     = textBox4.Text;
            Properties.Settings.Default.Nick     = textBox5.Text;
            Properties.Settings.Default.Password = textBox6.Text;
            Properties.Settings.Default.Save(); //Сохраняем

            //Соединяем сокет с удаленной точкой (сервером)
            server.Connect(IPAddress.Parse(textBox3.Text), Convert.ToInt32(textBox4.Text));

            //Отдельный поток для приёма входящих пакетов и ответа на них
            Thread1 = new Thread(delegate()
            {
                ReceiveMesssage();
            });

            //Запускаем этот поток
            Thread1.Start();

            //Выключаем текстбоксы
            textBox3.Enabled = false;
            textBox4.Enabled = false;
            textBox5.Enabled = false;
            textBox6.Enabled = false;

            byte[] PSP = new byte[32];
            //Формируем ПСП
            random.NextBytes(PSP);

            //Формируем ключ с помощью стрибога
            Stribog stribog = new Stribog(Stribog.lengthHash.Length256);

            key = stribog.GetHash(PSP);

            User user = new User();

            user.Name     = Properties.Settings.Default.Nick;
            user.Password = Properties.Settings.Default.Password.GetHashCode();
            user.key      = PSP;

            //Отправляем информацию о клиенте на сервер
            Send(mode, user);

            //Включаем комбокс со списком шифров
            comboBox1.Enabled = true;
        }
Beispiel #3
0
        private static byte[] GetEDS(byte[] data)
        {
            byte[] EDS = new byte[data.Length];

            for (int i = 0; i < data.Length / 32; i += 32)
            {
                byte[] iData = data.Skip(i).Take(32).ToArray();

                Stribog stribog = new Stribog(Stribog.lengthHash.Length256);
                byte[]  iEDS    = stribog.GetHash(iData);

                EDS.Concat(iEDS);
            }

            return(EDS);
        }
        public ActionResult Index(GOST34102012Models model)
        {
            BigInteger p = model.p;
            BigInteger a = model.a;
            BigInteger b = model.b;
            byte[] xG = model.xG;
            BigInteger n = model.n;
            DSGost DS = new DSGost(p, a, b, n, xG);
            BigInteger d = DS.GenPrivateKey(192, model.Seed);
            ECPoint Q = DS.GenPublicKey(d);
            Stribog hash = new Stribog(256);
            byte[] H = hash.GetHash(Encoding.Default.GetBytes(model.Text));
            string sign = DS.SignGen(H, d);
            bool result = DS.SignVer(H, sign, Q);

            ViewBag.d = d;
            ViewBag.Q = Q;
            ViewBag.H = H;
            ViewBag.alpha = DS.alpha;
            ViewBag.e = DS.e;
            ViewBag.k = DS.k;
            ViewBag.C = DS.C;
            ViewBag.r = DS.r;
            ViewBag.s = DS.s;
            ViewBag.sign = sign;

            ViewBag.n = DS.n;
            ViewBag.encr_r = DS.encr_r;
            ViewBag.encr_s = DS.encr_s;
            ViewBag.encr_alpha = DS.encr_alpha;
            ViewBag.encr_e = DS.encr_e;
            ViewBag.v = DS.v;
            ViewBag.z1 = DS.z1;
            ViewBag.z2 = DS.z2;
            ViewBag.A = DS.A;
            ViewBag.B = DS.B;
            ViewBag.R = DS.R;
            ViewBag.encr_C = DS.encr_C;

            return View("Echo", model);
        }