Translated encryption/decryption consistency tests to catch2
This commit is contained in:
parent
14e1fbe32c
commit
f75a41d8dc
@ -1,232 +1,222 @@
|
|||||||
/*
|
#include <GCrypt/Cipher.h>
|
||||||
#include "CppUnitTest.h"
|
#include <GCrypt/Util.h>
|
||||||
#include "../GhettoCrypt/Cipher.h"
|
#include "Catch2.h"
|
||||||
#include "../GhettoCrypt/Util.h"
|
|
||||||
|
|
||||||
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
|
using namespace Leonetienne::GCrypt;
|
||||||
using namespace GhettoCipher;
|
|
||||||
|
|
||||||
// THESE TESTS ASSUME BLOCK_SIZE == 512
|
// THESE TESTS ASSUME BLOCK_SIZE == 512
|
||||||
|
|
||||||
namespace SimpleTests
|
// Tests that encrypting a message of exactly BLOCK_SIZE yields the exact message back
|
||||||
{
|
TEST_CASE(__FILE__"/SingleBlock_NoPadding", "[Encryption/Decryption consistency]") {
|
||||||
TEST_CLASS(EncryptEqualsDecrypt)
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
// Tests that encrypting a message of exactly BLOCK_SIZE yields the exact message back
|
// Instanciate our cipher and supply a key
|
||||||
TEST_METHOD(SingleBlock_NoPadding)
|
const Block key = PasswordToKey("1234");
|
||||||
{
|
const Cipher cipher(key);
|
||||||
// Instanciate our cipher and supply a key
|
|
||||||
const Block key = PasswordToKey("1234");
|
|
||||||
const Cipher cipher(key);
|
|
||||||
|
|
||||||
// Recode the ascii-string to bits
|
// Recode the ascii-string to bits
|
||||||
const Flexblock cleartext_bits =
|
const Flexblock cleartext_bits =
|
||||||
"1011110011010110000010110001111000111010111101001010100100011101"
|
"1011110011010110000010110001111000111010111101001010100100011101"
|
||||||
"0101110101010010100000110100001000011000111010001001110101111111"
|
"0101110101010010100000110100001000011000111010001001110101111111"
|
||||||
"1110110101100101110001010101011110001010000010111110011011010111"
|
"1110110101100101110001010101011110001010000010111110011011010111"
|
||||||
"1100110100111000000011100101010100110010001110010011000010111001"
|
"1100110100111000000011100101010100110010001110010011000010111001"
|
||||||
"0000010000010000011001111010011110111001000000000110101000110001"
|
"0000010000010000011001111010011110111001000000000110101000110001"
|
||||||
"0110111110110110100000010100000011010001000011100100111001001011"
|
"0110111110110110100000010100000011010001000011100100111001001011"
|
||||||
"1101100100000100010000001011100010010001101111100100101100010001"
|
"1101100100000100010000001011100010010001101111100100101100010001"
|
||||||
"0000011110010110111010110110111110011110011010001100100111110101";
|
"0000011110010110111010110110111110011110011010001100100111110101";
|
||||||
|
|
||||||
// Encrypt our cleartext bits
|
// Encrypt our cleartext bits
|
||||||
const Flexblock ciphertext_bits = cipher.Encipher(cleartext_bits);
|
const Flexblock ciphertext_bits = cipher.Encipher(cleartext_bits);
|
||||||
|
|
||||||
// Decipher it again
|
// Decipher it again
|
||||||
const Flexblock decryptedBits = cipher.Decipher(ciphertext_bits);
|
const Flexblock decryptedBits = cipher.Decipher(ciphertext_bits);
|
||||||
|
|
||||||
// Assert that the decrypted text equals the plaintext
|
// Assert that the decrypted text equals the plaintext
|
||||||
Assert::AreEqual(
|
REQUIRE(
|
||||||
cleartext_bits,
|
cleartext_bits ==
|
||||||
decryptedBits
|
decryptedBits
|
||||||
);
|
);
|
||||||
}
|
|
||||||
|
|
||||||
// Tests that encrypting a message of less than BLOCK_SIZE yields the exact message plus zero-padding back
|
|
||||||
TEST_METHOD(SingleBlock_Padding)
|
|
||||||
{
|
|
||||||
// Instanciate our cipher and supply a key
|
|
||||||
const Block key = PasswordToKey("1234");
|
|
||||||
const Cipher cipher(key);
|
|
||||||
|
|
||||||
// Recode the ascii-string to bits
|
|
||||||
const Flexblock cleartext_bits =
|
|
||||||
"1011110011010110000010110001111000111010111101001010100100011101"
|
|
||||||
"0101110101010010100000110100001000011000111010001001110101111111"
|
|
||||||
"1110110101100101110001010101011110001010000010111110011011010111"
|
|
||||||
"1100110100111000000011100101010100110010001110010011000010111001"
|
|
||||||
"0000010000010000011001111010011110111001000000000110101000110001"
|
|
||||||
"0110111110110110100000010100000011010001000011100100111001001011"
|
|
||||||
"1101100100000100";
|
|
||||||
|
|
||||||
const Flexblock cleartext_bits_EXPECTED_RESULT =
|
|
||||||
"1011110011010110000010110001111000111010111101001010100100011101"
|
|
||||||
"0101110101010010100000110100001000011000111010001001110101111111"
|
|
||||||
"1110110101100101110001010101011110001010000010111110011011010111"
|
|
||||||
"1100110100111000000011100101010100110010001110010011000010111001"
|
|
||||||
"0000010000010000011001111010011110111001000000000110101000110001"
|
|
||||||
"0110111110110110100000010100000011010001000011100100111001001011"
|
|
||||||
"1101100100000100000000000000000000000000000000000000000000000000"
|
|
||||||
"0000000000000000000000000000000000000000000000000000000000000000";
|
|
||||||
|
|
||||||
// Encrypt our cleartext bits
|
|
||||||
const Flexblock ciphertext_bits = cipher.Encipher(cleartext_bits);
|
|
||||||
|
|
||||||
// Decipher it again
|
|
||||||
const Flexblock decryptedBits = cipher.Decipher(ciphertext_bits);
|
|
||||||
|
|
||||||
// Assert that the decrypted text equals the plaintext
|
|
||||||
Assert::AreEqual(
|
|
||||||
cleartext_bits_EXPECTED_RESULT,
|
|
||||||
decryptedBits
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tests that a decrypted ciphertext equals its plaintrext version, using a cleartext that requires A LOT of blocks
|
|
||||||
TEST_METHOD(MultiBlock_NoPadding)
|
|
||||||
{
|
|
||||||
// Instanciate our cipher and supply a key
|
|
||||||
const Block key = PasswordToKey("1234");
|
|
||||||
const Cipher cipher(key);
|
|
||||||
|
|
||||||
// Recode the ascii-string to bits
|
|
||||||
const Flexblock cleartext_bits =
|
|
||||||
"1011110011010110000010110001111000111010111101001010100100011101"
|
|
||||||
"0101110101010010100000110100001000011000111010001001110101111111"
|
|
||||||
"1110110101100101110001010101011110001010000010111110011011010111"
|
|
||||||
"1100110100111000000011100101010100110010001110010011000010111001"
|
|
||||||
"0000010000010000011001111010011110111001000000000110101000110001"
|
|
||||||
"0110111110110110100000010100000011010001000011100100111001001011"
|
|
||||||
"1101100100000100010000001011100010010001101111100100101100010001"
|
|
||||||
"0000011110010110111010110110111110011110011010001100100111110101"
|
|
||||||
"1000010010000000000100101011110001000101101101100000010011111011"
|
|
||||||
"1011111010110100100111100111110011100001111101111110000110001100"
|
|
||||||
"0001000111000111101110000111011011101010100010100101100111010100"
|
|
||||||
"0101111110110010110000111111011001101110101101100100100011000100"
|
|
||||||
"1000110010101001000100001001101000011111101011111100100000100101"
|
|
||||||
"1100001100111001011111001101000111011101011101000110010110110110"
|
|
||||||
"0111001010011010010000010110000110010101101100101110111100100011"
|
|
||||||
"0010111110011100010100000101100101110101101011110100100000110110"
|
|
||||||
"1001101110101001001111111000010100011100100000101000111101101111"
|
|
||||||
"0101111011110001101010111010001000111010101111001101100100100100"
|
|
||||||
"1110110111001100011010110000101000011001011100101100111101110000"
|
|
||||||
"1010101111011110000111011011011110000111010110110111111010101010"
|
|
||||||
"0111100101111001010111101000001010100000111010111100111011111001"
|
|
||||||
"0110111000000110100011011100101101010101101000010010011111100100"
|
|
||||||
"0010111000001011101110000110010011101001111010100111110111110101"
|
|
||||||
"1110111000000000101011000100101010000110110111101010011001111010"
|
|
||||||
"1101011110001110000011010111001100001100101000000101000101000010"
|
|
||||||
"0101000011011111010010110010000010101100001110011000110111110111"
|
|
||||||
"1110010101011110111001100010110101101011100111100011101010001011"
|
|
||||||
"0101110010100110101100111100010000111101111100000111000110110110"
|
|
||||||
"1001100111000000011010100000011101011000010010011010001011110000"
|
|
||||||
"1100100111111001001000011100110000011110001100000000010000001001"
|
|
||||||
"1110000000110010000010011010100011011011000000000111110000110111"
|
|
||||||
"0101110011001101010110010100011001110110000110010001100110011111";
|
|
||||||
|
|
||||||
// Encrypt our cleartext bits
|
|
||||||
const Flexblock ciphertext_bits = cipher.Encipher(cleartext_bits);
|
|
||||||
|
|
||||||
// Decipher it again
|
|
||||||
const Flexblock decryptedBits = cipher.Decipher(ciphertext_bits);
|
|
||||||
|
|
||||||
// Assert that the decrypted text equals the plaintext
|
|
||||||
Assert::AreEqual(
|
|
||||||
cleartext_bits,
|
|
||||||
decryptedBits
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tests that a decrypted ciphertext equals its plaintrext version, using a cleartext that requires A LOT of blocks
|
|
||||||
TEST_METHOD(MultiBlock_Padding)
|
|
||||||
{
|
|
||||||
// Instanciate our cipher and supply a key
|
|
||||||
const Block key = PasswordToKey("1234");
|
|
||||||
const Cipher cipher(key);
|
|
||||||
|
|
||||||
// Recode the ascii-string to bits
|
|
||||||
const Flexblock cleartext_bits =
|
|
||||||
"1011110011010110000010110001111000111010111101001010100100011101"
|
|
||||||
"0101110101010010100000110100001000011000111010001001110101111111"
|
|
||||||
"1110110101100101110001010101011110001010000010111110011011010111"
|
|
||||||
"1100110100111000000011100101010100110010001110010011000010111001"
|
|
||||||
"0000010000010000011001111010011110111001000000000110101000110001"
|
|
||||||
"0110111110110110100000010100000011010001000011100100111001001011"
|
|
||||||
"1101100100000100010000001011100010010001101111100100101100010001"
|
|
||||||
"0000011110010110111010110110111110011110011010001100100111110101"
|
|
||||||
"1000010010000000000100101011110001000101101101100000010011111011"
|
|
||||||
"1011111010110100100111100111110011100001111101111110000110001100"
|
|
||||||
"0001000111000111101110000111011011101010100010100101100111010100"
|
|
||||||
"0101111110110010110000111111011001101110101101100100100011000100"
|
|
||||||
"1000110010101001000100001001101000011111101011111100100000100101"
|
|
||||||
"1100001100111001011111001101000111011101011101000110010110110110"
|
|
||||||
"0111001010011010010000010110000110010101101100101110111100100011"
|
|
||||||
"0010111110011100010100000101100101110101101011110100100000110110"
|
|
||||||
"1001101110101001001111111000010100011100100000101000111101101111"
|
|
||||||
"0101111011110001101010111010001000111010101111001101100100100100"
|
|
||||||
"1110110111001100011010110000101000011001011100101100111101110000"
|
|
||||||
"1010101111011110000111011011011110000111010110110111111010101010"
|
|
||||||
"0111100101111001010111101000001010100000111010111100111011111001"
|
|
||||||
"0110111000000110100011011100101101010101101000010010011111100100"
|
|
||||||
"0010111000001011101110000110010011101001111010100111110111110101"
|
|
||||||
"1110111000000000101011000100101010000110110111101010011001111010"
|
|
||||||
"1101011110001110000011010111001100001100101000000101000101000010"
|
|
||||||
"0101000011011111010010110010000010101100001110011000110111110111"
|
|
||||||
"1110010101011110111001100010110101101011100111100011101010001011"
|
|
||||||
"0101110010100110101100111100010000111101111100000111000110110110"
|
|
||||||
"1001100111000000011010100000011101011000010010011010001011110000"
|
|
||||||
"1100100111111001001000011100110000011110001100000000010000001001"
|
|
||||||
"11100000001100100000100110101000110110110000000001111100001";
|
|
||||||
|
|
||||||
const Flexblock cleartext_bits_EXPECTED_RESULT =
|
|
||||||
"1011110011010110000010110001111000111010111101001010100100011101"
|
|
||||||
"0101110101010010100000110100001000011000111010001001110101111111"
|
|
||||||
"1110110101100101110001010101011110001010000010111110011011010111"
|
|
||||||
"1100110100111000000011100101010100110010001110010011000010111001"
|
|
||||||
"0000010000010000011001111010011110111001000000000110101000110001"
|
|
||||||
"0110111110110110100000010100000011010001000011100100111001001011"
|
|
||||||
"1101100100000100010000001011100010010001101111100100101100010001"
|
|
||||||
"0000011110010110111010110110111110011110011010001100100111110101"
|
|
||||||
"1000010010000000000100101011110001000101101101100000010011111011"
|
|
||||||
"1011111010110100100111100111110011100001111101111110000110001100"
|
|
||||||
"0001000111000111101110000111011011101010100010100101100111010100"
|
|
||||||
"0101111110110010110000111111011001101110101101100100100011000100"
|
|
||||||
"1000110010101001000100001001101000011111101011111100100000100101"
|
|
||||||
"1100001100111001011111001101000111011101011101000110010110110110"
|
|
||||||
"0111001010011010010000010110000110010101101100101110111100100011"
|
|
||||||
"0010111110011100010100000101100101110101101011110100100000110110"
|
|
||||||
"1001101110101001001111111000010100011100100000101000111101101111"
|
|
||||||
"0101111011110001101010111010001000111010101111001101100100100100"
|
|
||||||
"1110110111001100011010110000101000011001011100101100111101110000"
|
|
||||||
"1010101111011110000111011011011110000111010110110111111010101010"
|
|
||||||
"0111100101111001010111101000001010100000111010111100111011111001"
|
|
||||||
"0110111000000110100011011100101101010101101000010010011111100100"
|
|
||||||
"0010111000001011101110000110010011101001111010100111110111110101"
|
|
||||||
"1110111000000000101011000100101010000110110111101010011001111010"
|
|
||||||
"1101011110001110000011010111001100001100101000000101000101000010"
|
|
||||||
"0101000011011111010010110010000010101100001110011000110111110111"
|
|
||||||
"1110010101011110111001100010110101101011100111100011101010001011"
|
|
||||||
"0101110010100110101100111100010000111101111100000111000110110110"
|
|
||||||
"1001100111000000011010100000011101011000010010011010001011110000"
|
|
||||||
"1100100111111001001000011100110000011110001100000000010000001001"
|
|
||||||
"1110000000110010000010011010100011011011000000000111110000100000"
|
|
||||||
"0000000000000000000000000000000000000000000000000000000000000000";
|
|
||||||
|
|
||||||
// Encrypt our cleartext bits
|
|
||||||
const Flexblock ciphertext_bits = cipher.Encipher(cleartext_bits);
|
|
||||||
|
|
||||||
// Decipher it again
|
|
||||||
const Flexblock decryptedBits = cipher.Decipher(ciphertext_bits);
|
|
||||||
|
|
||||||
// Assert that the decrypted text equals the plaintext
|
|
||||||
Assert::AreEqual(
|
|
||||||
cleartext_bits_EXPECTED_RESULT,
|
|
||||||
decryptedBits
|
|
||||||
);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
// Tests that encrypting a message of less than BLOCK_SIZE yields the exact message plus zero-padding back
|
||||||
|
TEST_CASE(__FILE__"/SingleBlock_Padding", "[Encryption/Decryption consistency]") {
|
||||||
|
|
||||||
|
// Instanciate our cipher and supply a key
|
||||||
|
const Block key = PasswordToKey("1234");
|
||||||
|
const Cipher cipher(key);
|
||||||
|
|
||||||
|
// Recode the ascii-string to bits
|
||||||
|
const Flexblock cleartext_bits =
|
||||||
|
"1011110011010110000010110001111000111010111101001010100100011101"
|
||||||
|
"0101110101010010100000110100001000011000111010001001110101111111"
|
||||||
|
"1110110101100101110001010101011110001010000010111110011011010111"
|
||||||
|
"1100110100111000000011100101010100110010001110010011000010111001"
|
||||||
|
"0000010000010000011001111010011110111001000000000110101000110001"
|
||||||
|
"0110111110110110100000010100000011010001000011100100111001001011"
|
||||||
|
"1101100100000100";
|
||||||
|
|
||||||
|
const Flexblock cleartext_bits_EXPECTED_RESULT =
|
||||||
|
"1011110011010110000010110001111000111010111101001010100100011101"
|
||||||
|
"0101110101010010100000110100001000011000111010001001110101111111"
|
||||||
|
"1110110101100101110001010101011110001010000010111110011011010111"
|
||||||
|
"1100110100111000000011100101010100110010001110010011000010111001"
|
||||||
|
"0000010000010000011001111010011110111001000000000110101000110001"
|
||||||
|
"0110111110110110100000010100000011010001000011100100111001001011"
|
||||||
|
"1101100100000100000000000000000000000000000000000000000000000000"
|
||||||
|
"0000000000000000000000000000000000000000000000000000000000000000";
|
||||||
|
|
||||||
|
// Encrypt our cleartext bits
|
||||||
|
const Flexblock ciphertext_bits = cipher.Encipher(cleartext_bits);
|
||||||
|
|
||||||
|
// Decipher it again
|
||||||
|
const Flexblock decryptedBits = cipher.Decipher(ciphertext_bits);
|
||||||
|
|
||||||
|
// Assert that the decrypted text equals the plaintext
|
||||||
|
REQUIRE(
|
||||||
|
cleartext_bits_EXPECTED_RESULT ==
|
||||||
|
decryptedBits
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tests that a decrypted ciphertext equals its plaintrext version, using a cleartext that requires A LOT of blocks
|
||||||
|
TEST_CASE(__FILE__"MultiBlock_NoPadding/", "[Encryption/Decryption consistency]") {
|
||||||
|
|
||||||
|
// Instanciate our cipher and supply a key
|
||||||
|
const Block key = PasswordToKey("1234");
|
||||||
|
const Cipher cipher(key);
|
||||||
|
|
||||||
|
// Recode the ascii-string to bits
|
||||||
|
const Flexblock cleartext_bits =
|
||||||
|
"1011110011010110000010110001111000111010111101001010100100011101"
|
||||||
|
"0101110101010010100000110100001000011000111010001001110101111111"
|
||||||
|
"1110110101100101110001010101011110001010000010111110011011010111"
|
||||||
|
"1100110100111000000011100101010100110010001110010011000010111001"
|
||||||
|
"0000010000010000011001111010011110111001000000000110101000110001"
|
||||||
|
"0110111110110110100000010100000011010001000011100100111001001011"
|
||||||
|
"1101100100000100010000001011100010010001101111100100101100010001"
|
||||||
|
"0000011110010110111010110110111110011110011010001100100111110101"
|
||||||
|
"1000010010000000000100101011110001000101101101100000010011111011"
|
||||||
|
"1011111010110100100111100111110011100001111101111110000110001100"
|
||||||
|
"0001000111000111101110000111011011101010100010100101100111010100"
|
||||||
|
"0101111110110010110000111111011001101110101101100100100011000100"
|
||||||
|
"1000110010101001000100001001101000011111101011111100100000100101"
|
||||||
|
"1100001100111001011111001101000111011101011101000110010110110110"
|
||||||
|
"0111001010011010010000010110000110010101101100101110111100100011"
|
||||||
|
"0010111110011100010100000101100101110101101011110100100000110110"
|
||||||
|
"1001101110101001001111111000010100011100100000101000111101101111"
|
||||||
|
"0101111011110001101010111010001000111010101111001101100100100100"
|
||||||
|
"1110110111001100011010110000101000011001011100101100111101110000"
|
||||||
|
"1010101111011110000111011011011110000111010110110111111010101010"
|
||||||
|
"0111100101111001010111101000001010100000111010111100111011111001"
|
||||||
|
"0110111000000110100011011100101101010101101000010010011111100100"
|
||||||
|
"0010111000001011101110000110010011101001111010100111110111110101"
|
||||||
|
"1110111000000000101011000100101010000110110111101010011001111010"
|
||||||
|
"1101011110001110000011010111001100001100101000000101000101000010"
|
||||||
|
"0101000011011111010010110010000010101100001110011000110111110111"
|
||||||
|
"1110010101011110111001100010110101101011100111100011101010001011"
|
||||||
|
"0101110010100110101100111100010000111101111100000111000110110110"
|
||||||
|
"1001100111000000011010100000011101011000010010011010001011110000"
|
||||||
|
"1100100111111001001000011100110000011110001100000000010000001001"
|
||||||
|
"1110000000110010000010011010100011011011000000000111110000110111"
|
||||||
|
"0101110011001101010110010100011001110110000110010001100110011111";
|
||||||
|
|
||||||
|
// Encrypt our cleartext bits
|
||||||
|
const Flexblock ciphertext_bits = cipher.Encipher(cleartext_bits);
|
||||||
|
|
||||||
|
// Decipher it again
|
||||||
|
const Flexblock decryptedBits = cipher.Decipher(ciphertext_bits);
|
||||||
|
|
||||||
|
// Assert that the decrypted text equals the plaintext
|
||||||
|
REQUIRE(
|
||||||
|
cleartext_bits ==
|
||||||
|
decryptedBits
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tests that a decrypted ciphertext equals its plaintrext version, using a cleartext that requires A LOT of blocks
|
||||||
|
TEST_CASE(__FILE__"MultiBlock_Padding/", "[Encryption/Decryption consistency]") {
|
||||||
|
|
||||||
|
// Instanciate our cipher and supply a key
|
||||||
|
const Block key = PasswordToKey("1234");
|
||||||
|
const Cipher cipher(key);
|
||||||
|
|
||||||
|
// Recode the ascii-string to bits
|
||||||
|
const Flexblock cleartext_bits =
|
||||||
|
"1011110011010110000010110001111000111010111101001010100100011101"
|
||||||
|
"0101110101010010100000110100001000011000111010001001110101111111"
|
||||||
|
"1110110101100101110001010101011110001010000010111110011011010111"
|
||||||
|
"1100110100111000000011100101010100110010001110010011000010111001"
|
||||||
|
"0000010000010000011001111010011110111001000000000110101000110001"
|
||||||
|
"0110111110110110100000010100000011010001000011100100111001001011"
|
||||||
|
"1101100100000100010000001011100010010001101111100100101100010001"
|
||||||
|
"0000011110010110111010110110111110011110011010001100100111110101"
|
||||||
|
"1000010010000000000100101011110001000101101101100000010011111011"
|
||||||
|
"1011111010110100100111100111110011100001111101111110000110001100"
|
||||||
|
"0001000111000111101110000111011011101010100010100101100111010100"
|
||||||
|
"0101111110110010110000111111011001101110101101100100100011000100"
|
||||||
|
"1000110010101001000100001001101000011111101011111100100000100101"
|
||||||
|
"1100001100111001011111001101000111011101011101000110010110110110"
|
||||||
|
"0111001010011010010000010110000110010101101100101110111100100011"
|
||||||
|
"0010111110011100010100000101100101110101101011110100100000110110"
|
||||||
|
"1001101110101001001111111000010100011100100000101000111101101111"
|
||||||
|
"0101111011110001101010111010001000111010101111001101100100100100"
|
||||||
|
"1110110111001100011010110000101000011001011100101100111101110000"
|
||||||
|
"1010101111011110000111011011011110000111010110110111111010101010"
|
||||||
|
"0111100101111001010111101000001010100000111010111100111011111001"
|
||||||
|
"0110111000000110100011011100101101010101101000010010011111100100"
|
||||||
|
"0010111000001011101110000110010011101001111010100111110111110101"
|
||||||
|
"1110111000000000101011000100101010000110110111101010011001111010"
|
||||||
|
"1101011110001110000011010111001100001100101000000101000101000010"
|
||||||
|
"0101000011011111010010110010000010101100001110011000110111110111"
|
||||||
|
"1110010101011110111001100010110101101011100111100011101010001011"
|
||||||
|
"0101110010100110101100111100010000111101111100000111000110110110"
|
||||||
|
"1001100111000000011010100000011101011000010010011010001011110000"
|
||||||
|
"1100100111111001001000011100110000011110001100000000010000001001"
|
||||||
|
"11100000001100100000100110101000110110110000000001111100001";
|
||||||
|
|
||||||
|
const Flexblock cleartext_bits_EXPECTED_RESULT =
|
||||||
|
"1011110011010110000010110001111000111010111101001010100100011101"
|
||||||
|
"0101110101010010100000110100001000011000111010001001110101111111"
|
||||||
|
"1110110101100101110001010101011110001010000010111110011011010111"
|
||||||
|
"1100110100111000000011100101010100110010001110010011000010111001"
|
||||||
|
"0000010000010000011001111010011110111001000000000110101000110001"
|
||||||
|
"0110111110110110100000010100000011010001000011100100111001001011"
|
||||||
|
"1101100100000100010000001011100010010001101111100100101100010001"
|
||||||
|
"0000011110010110111010110110111110011110011010001100100111110101"
|
||||||
|
"1000010010000000000100101011110001000101101101100000010011111011"
|
||||||
|
"1011111010110100100111100111110011100001111101111110000110001100"
|
||||||
|
"0001000111000111101110000111011011101010100010100101100111010100"
|
||||||
|
"0101111110110010110000111111011001101110101101100100100011000100"
|
||||||
|
"1000110010101001000100001001101000011111101011111100100000100101"
|
||||||
|
"1100001100111001011111001101000111011101011101000110010110110110"
|
||||||
|
"0111001010011010010000010110000110010101101100101110111100100011"
|
||||||
|
"0010111110011100010100000101100101110101101011110100100000110110"
|
||||||
|
"1001101110101001001111111000010100011100100000101000111101101111"
|
||||||
|
"0101111011110001101010111010001000111010101111001101100100100100"
|
||||||
|
"1110110111001100011010110000101000011001011100101100111101110000"
|
||||||
|
"1010101111011110000111011011011110000111010110110111111010101010"
|
||||||
|
"0111100101111001010111101000001010100000111010111100111011111001"
|
||||||
|
"0110111000000110100011011100101101010101101000010010011111100100"
|
||||||
|
"0010111000001011101110000110010011101001111010100111110111110101"
|
||||||
|
"1110111000000000101011000100101010000110110111101010011001111010"
|
||||||
|
"1101011110001110000011010111001100001100101000000101000101000010"
|
||||||
|
"0101000011011111010010110010000010101100001110011000110111110111"
|
||||||
|
"1110010101011110111001100010110101101011100111100011101010001011"
|
||||||
|
"0101110010100110101100111100010000111101111100000111000110110110"
|
||||||
|
"1001100111000000011010100000011101011000010010011010001011110000"
|
||||||
|
"1100100111111001001000011100110000011110001100000000010000001001"
|
||||||
|
"1110000000110010000010011010100011011011000000000111110000100000"
|
||||||
|
"0000000000000000000000000000000000000000000000000000000000000000";
|
||||||
|
|
||||||
|
// Encrypt our cleartext bits
|
||||||
|
const Flexblock ciphertext_bits = cipher.Encipher(cleartext_bits);
|
||||||
|
|
||||||
|
// Decipher it again
|
||||||
|
const Flexblock decryptedBits = cipher.Decipher(ciphertext_bits);
|
||||||
|
|
||||||
|
// Assert that the decrypted text equals the plaintext
|
||||||
|
REQUIRE(
|
||||||
|
cleartext_bits_EXPECTED_RESULT ==
|
||||||
|
decryptedBits
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user