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());
            }
        }
Esempio n. 2
0
    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();
    }