//Генерация большого простого числа по алгоритму Эль-Гамаля
        private BigInteger BigSimpleElgamal(int NeededSize)
        {
            bool              check       = false;
            BigInteger        n           = 0;//Большое простое число
            BigInteger        F           = 0;
            BigInteger        R           = 0;
            List <BigInteger> SimplesForN = null;

            while (!check)
            {
                SimplesForN = new List <BigInteger>();
                F           = BIR.MakeF(NeededSize / 2 + 1, ref SimplesForN);
                R           = BIR.MakeF(NeededSize / 2);
                R           = R >> 1;
                R           = R << 1;
                n           = R * F + 1;
                check       = TestsForSimplicity.Poklington(n, 100, SimplesForN);
            }
            SimplesList = SimplesForN;
            return(n);
        }
        public BigInteger GenerateSimple(int NeededSize)
        {
            bool              check       = false;
            BigInteger        n           = 0;//Большое простое число
            BigInteger        F           = 0;
            BigInteger        R           = 0;
            List <BigInteger> SimplesForN = null;
            BigIntegerRandom  BIR         = new BigIntegerRandom();

            while (!check)
            {
                SimplesForN = new List <BigInteger>();
                F           = BIR.MakeF(NeededSize / 2 + 1, ref SimplesForN);
                R           = BIR.MakeF(NeededSize / 2);
                R           = R >> 1;
                R           = R << 1;
                n           = R * F + 1;
                check       = TestsForSimplicity.Poklington(n, 100, SimplesForN);
            }
            return(n);
        }