Использование стенографииDelphi , Синтаксис , ШифрованиеИспользование стенографии
Оформил: DeeCo // Do the actual encryption of the message inside the picture. procedure TForm1.btnEncryptClick(Sender: TObject); var x, y, i, j: Integer; PixelData: TColor; CharMask, CharData: Byte; begin // Assign the original picture to both the target encrypted image // and delta image. Also make sure thier resolution is sufficient to // indicate the change in the LSB. imgTarget.Picture.Assign(imgOrig.Picture); imgDelta.Picture.Assign(imgOrig.Picture); imgTarget.Picture.Bitmap.PixelFormat := pf32bit; imgDelta.Picture.Bitmap.PixelFormat := pf32bit; x := 0; y := 0; // The letter 'c' is identified by the binary representation of '10000011' // for each '1' in this number change the current pixel's LSB value. with imgTarget.Picture.Bitmap do for i := 1 to Length(sourceMessage.Text) do begin CharMask := $80; // 8 bytes for every letter to be encrypted. for j := 1 to 8 do begin // See if the current byte in the character is either '1' or '0'. CharData := Byte(sourceMessage.Text[i]) and CharMask; //Data is not zero - change the LSB of the current pixel. if (CharData <> 0) then begin // Xor the LSB value - hence change its value. PixelData := Canvas.Pixels[x, y] xor $1; // Store the changed pixel color back in the Pixels array. Canvas.Pixels[x, y] := PixelData; end; // Move to the next pixel. x := (x + 1) mod Width; if (x = 0) then begin Inc(y); end; // Move the mask to be applied to the current character to the // right, hence will now examine the next bit in the binary // representation of the current letter to be encrypted. CharMask := CharMask shr 1; end; end; // Show the difference in the Delta image. for y := 0 to imgOrig.Picture.Bitmap.Height -1 do for x := 0 to imgOrig.Picture.Bitmap.Width -1 do // Check for difference, the difference will show in the LSB of every // pixel in the original and target images. if (imgOrig.Picture.Bitmap.Canvas.Pixels[x, y] <> imgTarget.Picture.Bitmap.Canvas.Pixels[x, y]) then imgDelta.Picture.Bitmap.Canvas.Pixels[x, y] := clYellow; end; // Decryption ( by Lemy ) procedure TForm1.btnDecryptClick(Sender: TObject); Var x, y: integer; mask, ch: byte; begin sourceMessage.Clear; mask := $80; ch := 0; for y := 0 to imgOrig.Picture.Bitmap.Height -1 do begin for x := 0 to imgOrig.Picture.Bitmap.Width -1 do begin // if the pixel is different then set related bit if (imgOrig.Picture.Bitmap.Canvas.Pixels[x, y] <> imgTarget.Picture.Bitmap.Canvas.Pixels[x, y]) then ch := ch or mask; // shift the bit to the rigtht mask := mask shr 1; // if the mask is 0 then the dexryption of a char is completed // so add to the Text and rest the highest bit if mask = 0 Then begin sourceMessage.Text := sourceMessage.Text + char(ch); mask := $80; ch := 0; end; end; end; end; Код использует стеганографию для скрытия секретного сообщения в изображении. Процесс шифрования заключается в изменении наименее значимого бита (LSB) каждого пикселя в оригинальном изображении, чтобы представить двоичное представление символов в сообщении. Вот шаг за шагом, как это работает:
Техника стеганографии, используемая здесь, называется "бит-уровневой" или "пиксель-уровневой", где информация для скрытия (сообщение) кодируется изменением наименее значимых бит каждого пикселя цвета. Некоторые предложения по улучшению:
Вот альтернативное решение: Вместо изменения отдельных пикселей вы можете использовать более надежную технику стеганографии, например, распространяя информацию по нескольким пикселям или используя определенный паттерн для embedding сообщения в изображении. Кроме того, вы могли бы рассмотреть использование более безопасной методики скрытия сообщения, например, генерации уникального ключа для каждого символа с помощью функции хеширования и зашифровки сообщения с помощью этого ключа. Это сделало бы его намного труднее для атакующего обнаружить наличие скрытого сообщения. В целом, хотя этот код демонстрирует основное понимание стеганографии, он не является безопасным или надежным реализацией, и дополнительные улучшения необходимы, чтобы сделать его более эффективным. Использование стенографии для зашифровки текста в изображении. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Шифрование ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |