public static void decryptFile(BigInteger p, BigInteger x, int sizeOfBlock, string iFileName, string oFileName)
        {
            var  blocks = SplitFile.GetBlocksFromFile(iFileName, sizeOfBlock * 2, false);
            long lenght = blocks.Length;

            SetMaximum(lenght);
            List <BigInteger> newBlocks = new List <BigInteger>();

            for (int i = 0; i < blocks.Length; i += 2)
            {
                SetValue(i);
                var        a = blocks[i];
                var        b = blocks[i + 1];
                BigInteger m = decrypt(p, x, a, b);
                newBlocks.Add(m);
            }
            SplitFile.WriteBlocksToFile(oFileName, newBlocks.ToArray(), sizeOfBlock, true);
            EncodeFinished($"Файл\n{iFileName}\nуспешно дешифрован\n\nСоздан файл\n{oFileName}\nс открытым текстом");
        }
        public static void cryptFile(BigInteger p, BigInteger g, BigInteger x, int sizeOfBlock, string iFileName, string oFileName)
        {
            long i      = 0;
            var  y      = g.modPow(x, p);
            var  blocks = SplitFile.GetBlocksFromFile(iFileName, sizeOfBlock, true);
            long lenght = blocks.Length;

            SetMaximum(lenght);
            List <BigInteger> newBlocks = new List <BigInteger>();

            foreach (var m in blocks)
            {
                BigInteger k = (Rand() % (p - 1) + 1);
                BigInteger a;
                BigInteger b;
                crypt(p, g, y, m, out a, out b);
                newBlocks.Add(a);
                newBlocks.Add(b);
                SetValue(i);
                i++;
            }
            SplitFile.WriteBlocksToFile(oFileName, newBlocks.ToArray(), sizeOfBlock * 2, false);
            EncodeFinished($"Файл\n{iFileName}\nуспешно зашифрован\n\nСоздан файл\n{oFileName}\nс шифротекстом");
        }