public void TestTextEncryption() { int keySize; ElGamalPaddingMode padding = ElGamalPaddingMode.Zeros; string message = "Programming .NET Security"; var plaintext = Encoding.Default.GetBytes(message); ElGamal algorithm = new ElGamalManaged(); algorithm.Padding = padding; for (keySize = 384; keySize <= 1088; keySize += 8) { algorithm.KeySize = keySize; string parametersXML = algorithm.ToXmlString(true); ElGamal encryptAlgorithm = new ElGamalManaged(); encryptAlgorithm.FromXmlString(algorithm.ToXmlString(false)); byte[] ciphertext = encryptAlgorithm.EncryptData(plaintext); ElGamal decryptAlgorithm = new ElGamalManaged(); decryptAlgorithm.FromXmlString(algorithm.ToXmlString(true)); byte[] candidatePlaintext = decryptAlgorithm.DecryptData(ciphertext); CollectionAssert.AreEqual(plaintext, candidatePlaintext, "Failed at keysize: " + keySize.ToString()); } }
public static void TestTextEncryption(string message = "Programming .NET Security", int keySize = 1024, ElGamalPaddingMode padding = ElGamalPaddingMode.Zeros) { Console.WriteLine(); Console.WriteLine("-- Testing string encryption ---"); var plaintext = Encoding.Default.GetBytes(message); ElGamal algorithm = new ElGamalManaged(); algorithm.KeySize = keySize; algorithm.Padding = padding; string parametersXML = algorithm.ToXmlString(true); Console.WriteLine("\n{0}\n", PrettifyXML(parametersXML)); ElGamal encryptAlgorithm = new ElGamalManaged(); encryptAlgorithm.FromXmlString(algorithm.ToXmlString(false)); byte[] ciphertext = encryptAlgorithm.EncryptData(plaintext); ElGamal decryptAlgorithm = new ElGamalManaged(); decryptAlgorithm.FromXmlString(algorithm.ToXmlString(true)); byte[] candidatePlaintext = decryptAlgorithm.DecryptData(ciphertext); Console.WriteLine("Original string: '{0}'", message); Console.WriteLine("Decrypted string: '{0}'", Encoding.Default.GetString(candidatePlaintext)); Console.WriteLine("Byte arrays equal: {0}", plaintext.SequenceEqual(candidatePlaintext)); Console.WriteLine(); }