Ejemplo n.º 1
0
        public void AESinCBC_Encrypt_Decrypt_Test()  //CBC = Cipher Block Chaining
        {
            int BLOCKSIZE = 16;

            string OriginalMessage = "Now I rock a house party at the drop of a hat\nAnd I beat a body down with an aluminum bat";
            var    bytes           = MyConvert.TextToByteArray(OriginalMessage);
            var    PaddedBytes     = Pad.AddPkcs7(bytes, 128); //Pad the message to 128 bytes

            //The Key (16 bytes)
            string key      = "YELLOW SUBMARINE";
            string HexKey   = MyConvert.HexEncodePlainText(key);
            var    Keybytes = MyConvert.HexToByteArray(HexKey);

            //Initialization Vector (padded to BLOCKSIZE bytes)
            string IVHex   = Pad.PadHex(BLOCKSIZE * 2, "00");
            var    IVBytes = MyConvert.HexToByteArray(IVHex);

            //Encrypt
            var CiperBytes = MyCrypto.AES_CBC_Encrypt(PaddedBytes, Keybytes, IVBytes, BLOCKSIZE);

            //Decrypt
            var PlainBytes    = MyCrypto.AES_CBC_Decrypt(CiperBytes, Keybytes, IVBytes, BLOCKSIZE);
            var UnPaddedBytes = Pad.RemovePkcs7(PlainBytes); //Unpad the message
            var hexPlain      = MyConvert.BytesToHex(UnPaddedBytes);
            var PlainText     = MyConvert.HexToAscii(hexPlain);

            Assert.IsTrue(OriginalMessage == PlainText);
        }
Ejemplo n.º 2
0
        public void PKCS7_Test()
        {   //https://en.wikipedia.org/wiki/Padding_(cryptography)#PKCS%235_and_PKCS%237
            //https://cryptopals.com/sets/2/challenges/9
            string Text   = "YELLOW SUBMARINE";
            var    bytes  = MyConvert.TextToByteArray(Text);
            var    result = Pad.AddPkcs7(bytes, 20);

            for (int i = 16; i < 20; i++)
            {
                Assert.AreEqual(result[i], 4); //four extra bytes, so fill with Hex 04
            }
        }
Ejemplo n.º 3
0
        public void AESinECB_Encrypt_Decrypt_Test()  //ECB = Electronic Codebook
        {
            string OriginalMessage = "Now is the time for all good men to come to the aid of their country";
            var    bytes           = MyConvert.TextToByteArray(OriginalMessage);
            var    PaddedBytes     = Pad.AddPkcs7(bytes, 128); //Pad the message to 128 bytes

            //The Key (16 bytes)
            string key      = "YELLOW SUBMARINE";
            string HexKey   = MyConvert.HexEncodePlainText(key);
            var    Keybytes = MyConvert.HexToByteArray(HexKey);

            //Encrypt
            var CiperBytes = MyCrypto.AES_ECB_Encrypt(PaddedBytes, Keybytes);

            //Decrypt
            var PlainBytes    = MyCrypto.AES_ECB_Decrypt(CiperBytes, Keybytes);
            var UnPaddedBytes = Pad.RemovePkcs7(PlainBytes); //Unpad the message
            var hexPlain      = MyConvert.BytesToHex(UnPaddedBytes);
            var PlainText     = MyConvert.HexToAscii(hexPlain);

            Assert.IsTrue(OriginalMessage == PlainText);
        }