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с шифротекстом"); }