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