Esempio n. 1
0
        public void ShouldCalculateDifferencesOnLsb(int payloadSize, string filename)
        {
            payloadSize = payloadSize / 8;
            var          inputMessage           = GeneratePayload(payloadSize);
            Bitmap       cleanImage             = new Bitmap(filename);
            LSBHeader    header                 = new LSBHeader(MessageType.Plaintext, inputMessage.Length);
            string       inputMeesageInBits     = MessageConverter.Instance.TextToBit(inputMessage);
            InputMessage inputMessageWithHeader = new InputMessage(inputMeesageInBits, header);

            Console.WriteLine("Message size is in bits is {0}", inputMeesageInBits.Length);
            Console.WriteLine("Message with header size is {0}", inputMeesageInBits.Length + LSBHeaderConstants.PlainTextHeaderLength);

            var capacity = cleanImage.Width * cleanImage.Height * 3;

            Console.WriteLine("Image capacity  is {0}", capacity);

            Bitmap        encryptedImage     = LSB.Instance.Encode(cleanImage, inputMessageWithHeader);
            OutputMessage imageMessageInBits = LSB.Instance.Decode(encryptedImage);
            string        imageMessage       = AlgorithmUtility.bitMessageToText(imageMessageInBits.GetContent(), (int)LSBHeaderConstants.PlainTextHeaderLength);

            Assert.AreEqual(imageMessage, inputMessage);

            double mse = MSE.Instance.CalculateDifference(cleanImage, encryptedImage);

            Console.WriteLine("MSE is {0}", mse);

            double psnr = PSNR.Instance.CalculateDifference(mse);

            Console.WriteLine("PSNR is {0}", psnr);

            double imageSimilarity;

            ImageDifference.Instance.CalculateDifference(cleanImage, encryptedImage, out imageSimilarity);
            Console.WriteLine("Image Similiarity is {0}", imageSimilarity);
        }
Esempio n. 2
0
        public void ShouldCalculateDifferencesOnHS(int payloadSize, string filename)
        {
            payloadSize = payloadSize / 8;
            var           message            = GeneratePayload(payloadSize);
            Bitmap        cleanImage         = new Bitmap(filename);
            HSHeader      header             = new HSHeader(MessageType.Plaintext, message.Length);
            string        inputMeesageInBits = MessageConverter.Instance.TextToBit(message);
            IInputMessage inputMessage       = new InputMessage(inputMeesageInBits, header);

            Console.WriteLine("Message size is in bits is {0}", inputMeesageInBits.Length);
            Console.WriteLine("Message with header size is {0}", inputMeesageInBits.Length + HSHeaderConstants.PlainTextHeaderLength);


            Dictionary <int, int>      histogram = HS.Instance.calculateHistogram(cleanImage);
            Tuple <int, int, int, int> myTuple   = HS.Instance.findMinAndMax(histogram);
            int minIndex      = myTuple.Item3;
            int maxIndex      = myTuple.Item4;
            int maxIndexValue = myTuple.Item2;

            var capacity = maxIndexValue;

            Console.WriteLine("Image capacity  is {0}", capacity);


            Bitmap encryptedImage = HS.Instance.Encode(cleanImage, inputMessage);


            OutputMessage imageMessageInBits = HS.Instance.Decode(encryptedImage, minIndex, maxIndex);
            string        imageMessage       = AlgorithmUtility.bitMessageToText(imageMessageInBits.GetContent(), (int)HSHeaderConstants.PlainTextHeaderLength);

            Assert.AreEqual(message, imageMessage);

            double mse = MSE.Instance.CalculateDifference(cleanImage, encryptedImage);

            Console.WriteLine("MSE is {0}", mse);

            double psnr = PSNR.Instance.CalculateDifference(mse);

            Console.WriteLine("PSNR is {0}", psnr);

            double imageSimilarity;

            ImageDifference.Instance.CalculateDifference(cleanImage, encryptedImage, out imageSimilarity);
            Console.WriteLine("Image Similiarity is {0}", imageSimilarity);

            Bitmap cleanedImage = HS.Instance.Clean(encryptedImage, minIndex, maxIndex);

            var error = MSE.Instance.CalculateDifference(cleanedImage, cleanImage);

            Assert.AreEqual(0, error);
        }
Esempio n. 3
0
        public void ShouldReadEncryptedTextInputMessageLeft(string message)
        {
            Bitmap        cleanImage         = new Bitmap(cleanImagePathLeft);
            HSHeader      header             = new HSHeader(MessageType.Plaintext, message.Length, 0);
            string        inputMeesageInBits = MessageConverter.Instance.TextToBit(message);
            IInputMessage inputMessage       = new InputMessage(inputMeesageInBits, header);
            Bitmap        encryptedImage     = HS.Instance.Encode(cleanImage, inputMessage);

            Dictionary <int, int>      histogram = HS.Instance.calculateHistogram(cleanImage);
            Tuple <int, int, int, int> myTuple   = HS.Instance.findMinAndMax(histogram);
            int minIndex = myTuple.Item3;
            int maxIndex = myTuple.Item4;

            OutputMessage imageMessageInBits = HS.Instance.Decode(encryptedImage, minIndex, maxIndex);
            string        imageMessage       = AlgorithmUtility.bitMessageToText(imageMessageInBits.GetContent(), (int)HSHeaderConstants.PlainTextHeaderLength);

            Assert.AreEqual(message, imageMessage);
        }
Esempio n. 4
0
        private void decryptButton_Click(object sender, RoutedEventArgs e)
        {
            string      message     = null;
            int         imageHeight = 0;
            int         imageWidth  = 0;
            Bitmap      drawnImage  = null;
            MessageType messageType = MessageType.Plaintext;

            if (algorithmsComboBox.SelectedItem.ToString() == "LSB")
            {
                IOutputMessage messageInBits = LSB.Instance.Decode(new Bitmap(carrierViewer.filename));
                messageType = messageInBits.GetHeaderData().GetMessageType();
                string outputMessage = messageInBits.GetContent();
                switch (messageType)
                {
                case MessageType.Plaintext:
                    message = AlgorithmUtility.bitMessageToText(outputMessage, (int)LSBHeaderConstants.PlainTextHeaderLength);
                    break;

                case MessageType.BinaryImage:
                    message     = outputMessage.Substring((int)LSBHeaderConstants.BinaryImageHeaderLength);
                    imageHeight = messageInBits.GetHeaderData().GetImageHeight();
                    imageWidth  = messageInBits.GetHeaderData().GetImageWidth();
                    drawnImage  = ImageDrawer.Instance.DrawBinaryImage(message, imageWidth, imageHeight);
                    break;

                case MessageType.GrayscaleImage:
                    message     = outputMessage.Substring((int)LSBHeaderConstants.GrayscaleImageHeaderLength);
                    imageHeight = messageInBits.GetHeaderData().GetImageHeight();
                    imageWidth  = messageInBits.GetHeaderData().GetImageWidth();
                    drawnImage  = ImageDrawer.Instance.DrawGrayscaleImage(message, imageWidth, imageHeight);
                    break;

                case MessageType.ColorImage:
                    message     = outputMessage.Substring((int)LSBHeaderConstants.ColorImageHeaderLength);
                    imageHeight = messageInBits.GetHeaderData().GetImageHeight();
                    imageWidth  = messageInBits.GetHeaderData().GetImageWidth();
                    drawnImage  = ImageDrawer.Instance.DrawColorImage(message, imageWidth, imageHeight);
                    break;
                }
            }

            else if (algorithmsComboBox.SelectedItem.ToString() == "Histogram shifting")
            {
                HSSettings     tab           = settingsTabControl.SelectedContent as HSSettings;
                int            minIndex      = tab.getMinIndex();
                int            maxIndex      = tab.getMaxIndex();
                IOutputMessage messageInBits = HS.Instance.Decode(new Bitmap(carrierViewer.filename), minIndex, maxIndex);
                messageType = messageInBits.GetHeaderData().GetMessageType();
                string outputMessage = messageInBits.GetContent();
                switch (messageType)
                {
                case MessageType.Plaintext:
                    message = AlgorithmUtility.bitMessageToText(outputMessage, (int)HSHeaderConstants.PlainTextHeaderLength);
                    break;

                case MessageType.BinaryImage:
                    message     = outputMessage.Substring((int)HSHeaderConstants.BinaryImageHeaderLength);
                    imageHeight = messageInBits.GetHeaderData().GetImageHeight();
                    imageWidth  = messageInBits.GetHeaderData().GetImageWidth();
                    drawnImage  = ImageDrawer.Instance.DrawBinaryImage(message, imageWidth, imageHeight);
                    break;

                case MessageType.GrayscaleImage:
                    message     = outputMessage.Substring((int)HSHeaderConstants.GrayscaleImageHeaderLength);
                    imageHeight = messageInBits.GetHeaderData().GetImageHeight();
                    imageWidth  = messageInBits.GetHeaderData().GetImageWidth();
                    drawnImage  = ImageDrawer.Instance.DrawGrayscaleImage(message, imageWidth, imageHeight);
                    break;

                case MessageType.ColorImage:
                    message     = outputMessage.Substring((int)HSHeaderConstants.ColorImageHeaderLength);
                    imageHeight = messageInBits.GetHeaderData().GetImageHeight();
                    imageWidth  = messageInBits.GetHeaderData().GetImageWidth();
                    drawnImage  = ImageDrawer.Instance.DrawColorImage(message, imageWidth, imageHeight);
                    break;
                }
            }

            // need to change this dynamically
            if (messageType == MessageType.Plaintext)
            {
                messageTabControl.SelectedItem = messageTextBox;
                TextBox tab = messageTabControl.SelectedContent as TextBox;
                tab.Text = message;
                //messageTextBox.selec = message;
            }
            else
            {
                messageTabControl.SelectedItem = messageImage;
                Image tab = messageTabControl.SelectedContent as Image;
                tab.Source = ToBitmapImage(drawnImage);
            }
        }