public void TestTextEncryption() { // Test failed somehow. // UPDATE: This test unexpectedly passed. I guess it's due to the BigInteger package update. string message = "This is to test Paillier encryption and hopefully this message contains more than 2 blocks please please please please please please please please please please please pleaseplease please please pleaseplease please please please "; PaillierPaddingMode padding = PaillierPaddingMode.Zeros; var plaintext = Encoding.Default.GetBytes(message); Paillier algorithm = new PaillierManaged(); for (int keySize = 384; keySize <= 1088; keySize += 8) { algorithm.KeySize = keySize; algorithm.Padding = padding; Paillier encryptAlgorithm = new PaillierManaged(); encryptAlgorithm.FromXmlString(algorithm.ToXmlString(false)); var ciphertext = encryptAlgorithm.EncryptData(plaintext); Paillier decryptAlgorithm = new PaillierManaged(); decryptAlgorithm.FromXmlString(algorithm.ToXmlString(true)); var candidatePlaintext = decryptAlgorithm.DecryptData(ciphertext); var strip_zeros = StripTrailingZeros(candidatePlaintext, plaintext.Length); CollectionAssert.AreEqual(plaintext, strip_zeros); } }
public static void TestTextEncryption(string message = "This is to test Paillier encryption and hopefully this message contains more than 2 blocks please please please please please please please please please please please pleaseplease please please pleaseplease please please please ", int keySize = 384, PaillierPaddingMode padding = PaillierPaddingMode.Zeros) { Console.WriteLine(); Console.WriteLine("-- Testing string encryption ---"); var plaintext = Encoding.Default.GetBytes(message); Paillier algorithm = new PaillierManaged(); algorithm.KeySize = keySize; algorithm.Padding = padding; var parametersXML = algorithm.ToXmlString(true); Console.WriteLine("\n{0}\n", PrettifyXML(parametersXML)); Paillier encryptAlgorithm = new PaillierManaged(); encryptAlgorithm.FromXmlString(algorithm.ToXmlString(false)); var ciphertext = encryptAlgorithm.EncryptData(plaintext); Paillier decryptAlgorithm = new PaillierManaged(); decryptAlgorithm.FromXmlString(algorithm.ToXmlString(true)); var candidatePlaintext = decryptAlgorithm.DecryptData(ciphertext); var strip_zeros = StripTrailingZeros(candidatePlaintext, plaintext.Length); 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("Byte arrays equal: {0}", plaintext.SequenceEqual(strip_zeros)); Console.WriteLine(); }