private void generate() { EvklidBigInteger evklid = new EvklidBigInteger(); do { server.q = BigInteger.ProbablePrime(server.bitLength, new Random()); } while (!server.q.IsProbablePrime(10)); do { server.p = BigInteger.ProbablePrime(server.bitLength, new Random()); } while (!server.p.IsProbablePrime(10)); server.n = server.q.Multiply(server.p); server.f = (server.p.Subtract(BigInteger.One).Multiply(server.q.Subtract(BigInteger.One))); while (true) { server.d = BigInteger.ProbablePrime(server.bitLength, new Random()); if (evklid.gcd(server.d, server.f).CompareTo(BigInteger.One) == 0) { if (evklid.mY.CompareTo(BigInteger.Zero) < 0) { server.c = evklid.mY.Add(server.f); } else { server.c = evklid.mY; } break; } } }
protected void CreateKey() { EvklidBigInteger evklid = new EvklidBigInteger(); Random Rand = new Random(); int bit = 512; do { Q = BigInteger.ProbablePrime(bit, new Random()); } while (Q.IsProbablePrime(1 << 10) == false); do { P = BigInteger.ProbablePrime(bit, new Random()); } while (P.IsProbablePrime(1 << 10) == false); N = P.Multiply(Q); F = (P.Subtract(BigInteger.One)).Multiply((Q.Subtract(BigInteger.One))); while (true) { var dCount = Rand.Next(1, F.ToString().Length - 1); d = new BigInteger(dCount, Rand); var gcd = F.Gcd(d); if (gcd.CompareTo(BigInteger.One) == 0) { break; } } c = d.ModInverse(F); }
public void generateSV() { EvklidBigInteger evklid = new EvklidBigInteger(); BigInteger tmp_s; do { tmp_s = BigInteger.ProbablePrime(bitLength, new Random()); } while (!tmp_s.IsProbablePrime(10) && evklid.gcd(tmp_s, n).CompareTo(BigInteger.One) != 0); s = tmp_s; v = MyModPowBigInteger.FastModuloExponentiation(s, BigInteger.Two, n); }
/* * Generate P and Q */ private void generate() { EvklidBigInteger evklid = new EvklidBigInteger(); BigInteger tmp_p, tmp_q; do { do { tmp_p = BigInteger.ProbablePrime(bitLength, new Random()); tmp_q = BigInteger.ProbablePrime(bitLength, new Random()); } while (!tmp_p.IsProbablePrime(10) && !tmp_q.IsProbablePrime(10)); } while (evklid.gcd(tmp_q, tmp_p).CompareTo(BigInteger.One) != 0); p = tmp_p; q = tmp_q; n = q.Multiply(p); t = 10; }
public Player(BigInteger p_prev) { EvklidBigInteger evklid = new EvklidBigInteger(); do { c = BigInteger.ProbablePrime(bitLength, new Random()); if (evklid.gcd(c, p_prev).CompareTo(BigInteger.One) == 0) { if (evklid.mY.CompareTo(BigInteger.Zero) < 0) { d = evklid.mY.Add(p_prev); } else { d = evklid.mY; } break; } } while (true); }
protected void Vote() { EvklidBigInteger evklid = new EvklidBigInteger(); if (string.IsNullOrEmpty(voice.name)) { titleName = "Введите имя"; checkResult = "Голосуйте, мы вам не мешаем"; destruct(); return; } else { titleName = "Здравствуйте, " + voice.name; } if (Voise == 0) { Text = "Введите свой голос!"; return; } string filename = "Resource/people.txt"; try { using (StreamReader reader = new StreamReader(filename)) { string line; while ((line = reader.ReadLine()) != null) { if (voice.name == line) { checkResult = "Не голосуйте повторно"; return; } } reader.Close(); } using (StreamWriter writer = new StreamWriter(filename, true)) { string line = voice.name + "\n"; writer.Write(line); writer.Close(); } } catch (Exception e) { Console.WriteLine(e.Message); } voice.bitLength = 512; voice.n = BigInteger.ProbablePrime(voice.bitLength, new Random()); int h_key = key[Voise].GetHashCode(); voice.n = voice.n.Add(new BigInteger(h_key.ToString())); BigInteger tmp_r; do { tmp_r = BigInteger.ProbablePrime(32, new Random()); } while (evklid.gcd(tmp_r, server.getN()).CompareTo(BigInteger.One) != 0); voice.r = tmp_r; voice.h = new BigInteger(Math.Abs(voice.n.GetHashCode()) + ""); voice._h = voice.h.Multiply(MyModPowBigInteger.FastModuloExponentiation(voice.r, server.getD(), server.getN())); voice._s = server.getTicket(voice._h); voice.s = voice._s.Multiply(voice.r.ModInverse(server.getN())); if (server.checkVoice(voice.n, voice.s)) { checkResult = "Благодарим, вы успешно проголосовали"; } else { checkResult = "Ошибка"; } filename = "Resource/resultVoises.txt"; try { using (StreamReader reader = new StreamReader(filename)) { string line; while ((line = reader.ReadLine()) != null) { string lineInput = voice.n.ToString() + " " + voice.s.ToString(); if (lineInput == line) { checkResult = "У разных Имен совпали подписи"; return; } } reader.Close(); } using (StreamWriter writer = new StreamWriter(filename, true)) { string line = voice.n + " " + voice.s + "\n"; writer.Write(line); writer.Close(); } } catch (Exception e) { Console.WriteLine(e.Message); } }