/// <summary> /// Gets message from container. /// </summary> /// <param name="container">Container.</param> /// <param name="key">Key.</param> /// <returns>Hidden message.</returns> public byte[] Extract(Container container, Key key) { if (!container.ContentType.Contains(Constants.IMAGE_CONTENT_TYPE)) throw new ArgumentException("LSB is only works with image containers."); Bitmap bitmap = new Bitmap(container.InputStream); byte[] bytes = new byte[key.MessageLength]; for (int y = 0; y < bitmap.Height; y++) { for (int x = 0; x < bitmap.Width; x++) { int number = x + y * bitmap.Width; if (number >= key.MessageLength << 3) { return bytes; } Color pixel = bitmap.GetPixel(x, y); extractDataFromPixel(number, pixel, bytes); } } return bytes; }
public static string ExtractDwm(IEmbeder embeder, ICryptor cryptor, Key key, Container container) { byte[] byteMessage = embeder.Extract(container, key); Stream message = cryptor.Decrypt(StreamHelper.BytesToStream(byteMessage), key); return StreamHelper.StreamToString(message); }
public static Key GenerateKey(Container container, string message, CryptType cryptType, EmbedType embedType, IKeyAware keyParser, string stringkey) { if (!keyParser.ValidateKey(stringkey)) throw new ArgumentException("Key is not valid."); Key key = new Key(); key.CryptType = cryptType; key.EmbedType = embedType; key.MessageLength = Constants.DEFAULT_ENCODING.GetByteCount(message); key.Value = keyParser.ParseKey(stringkey); return key; }
public byte[] Extract(Commons.Container container, Key key) { return new byte[0]; }
public bool ValidateKey(Key key, Container container) { return key.CryptType == CryptType.DES && key.MessageLength == container.InputStream.Length; }
public Stream Encrypt(Stream message, Key key) { DES DESkey1 = new DES(); FileProcessing fp = new FileProcessing(); MemoryStream ms = new MemoryStream(); fp.EnCryptFile(message, ms, cm1k, DESkey1.KeyList, null, null, 0, false); return ms; }
/// <summary> /// Embeds DWM within container. /// </summary> /// <param name="cryptor">Crypt algorithm.</param> /// <param name="embeder">Embeding algorithm.</param> /// <param name="message">Secret message.</param> /// <param name="key">Crypting key.</param> /// <param name="container">Container.</param> /// <param name="fileName">Container file name.</param> /// <returns>Saved file name at server.</returns> public static void EmbedDwm(ICryptor cryptor, IEmbeder embeder, string message, Key key, Container container) { Stream cryptedMessage = cryptor.Encrypt(StreamHelper.StringToStream(message), key); embeder.Embed(container, StreamHelper.StreamToBytesArray(cryptedMessage)); }
public bool ValidateKey(Key key, Container container) { return true; }
public Stream Encrypt(Stream message, Key key) { return message; }
public System.IO.Stream Encrypt(Stream message, Key key) { return message; }