Вы можете скрыть данные в тексте? - PullRequest
5 голосов
/ 06 декабря 2008

Я хочу разместить текст на странице и скрыть некоторые данные в этом тексте. Кто-нибудь знает какие-либо методы / шаблоны, которые использовались в прошлом для решения этой проблемы?

Пример: у меня есть следующий текст: «Кот сидел на собаке и был счастлив».

У меня также есть номер 123. Я хочу спрятать этот номер в этом предложении так, чтобы предложение могло быть размещено на веб-странице, и только кто-то в курсе мог найти данные.

Ответы [ 12 ]

11 голосов
/ 06 декабря 2008

Конечно, это можно сделать.

То, что вы описываете, находится в широком описании под названием Стеганография .

Например, вы можете закодировать число таким образом, чтобы подсчитывать количество слов, пока не увидите букву B, в этом случае 123 можно закодировать как:

You belong to the beautiful group of people being elite.

Дело в том, что человек, желающий расшифровать ваше сообщение , должен знать ваш алгоритм.

Редактировать Я заметил, что мои номера отключены на один. Начните считать с 0, и вы увидите число 123.

4 голосов
/ 06 декабря 2008

HTML делает это довольно легко. Не нужно по-настоящему хитрого количества стеганографии и т. Д. Давайте посмотрим:

Это предложение встраивает 123, а затем прекращает встраивание.

Это предложение встраивает 0102, а затем прекращает встраивание.

(Посмотрим, будет ли это на самом деле в уценке, но я подозреваю, что так.) По общему признанию, вполне очевидно, если вы знаете, что есть что-то , но я думаю, вы согласитесь это не очевидно для случайных наблюдателей.

Я оставил небольшую загадку, чтобы разработать схему, но добавьте комментарий, если вы хотите, чтобы это было подробно объяснено.

3 голосов
/ 08 декабря 2008

Существуют очень сложные подходы к этой проблеме, но вы, вероятно, можете пойти с очень простым. Например. определить прилагательное для каждого числа:

0. beautiful
1. harmless
2. evil
3. colorful
4. weird

и так далее. Теперь выберите предложения по вашему выбору и поместите их в предложения, к которым относятся прилагательные.

"The {adj} cat sat on the {adj} dog and the {adj} cat was happy."

Ваш номер 123, поэтому ваше предложение

"The harmless cat sat on the evil dog and the colorful cat was happy."

Парсер может легко взять предложение, разбить его на слова, найти прилагательные в таблице выше и преобразовать их обратно в числа.

The -> ?
harmless -> 1
cat -> ?
sat -> ?
on -> ?
the -> ?
evil -> 2
:

в конце у вас снова 123.

Как только люди узнают, что в предложении скрыта информация, алгоритм легко нарушается. Вы можете усложнить ломку, если добавите вариацию, определив несколько прилагательных на число. Вместо

1. harmless

вы можете определить

1. harmless/stupid/blue/fashionable

когда вам нужно кодировать 1, случайным образом выберите любое из слов выше. Поскольку все они сопоставляются с номером 1, обратному парсеру не будет важно, какое из слов там напечатано, результат всегда будет один. Эта рандомизация усложнит обратную разработку алгоритма.

2 голосов
/ 06 декабря 2008

Я думаю, что на высоком уровне вы говорите о стеганографии. http://en.wikipedia.org/wiki/Steganography

Раздел о современных методах должен помочь вам начать: http://en.wikipedia.org/wiki/Steganography#Modern_steganographic_techniques

1 голос
/ 06 декабря 2008

Я думаю, что вы ищете то, что называется стеганографией. У Коринны Джона есть отличная коллекция статей на эту тему о CodeProject.

http://www.codeproject.com/script/Articles/MemberArticles.aspx?amid=475133

0 голосов
/ 06 мая 2017

У меня есть две схемы с хорошей безопасностью, но с компромиссом довольно низких уровней встраивания стегабита. Один из них чрезвычайно прост, но имеет скорость внедрения 1 бит на строку произвольных пользовательских текстов, тогда как другой, требующий от пользователя составлять защитные тексты под руководством программного обеспечения, достигает скорости внедрения в диапазоне [0,5 1,0] за слово. Смотрите мою домашнюю страницу mok-kong-shen.de

0 голосов
/ 01 марта 2013

Вот прототип преобразования зашифрованных данных в «естественное» текстовое сообщение.

http://herosys.net/w/project/text-steganography-hide-text-in-spam-sms

Преобразовать исходный текст, например, "Посмотри на восточную дверь университета, завтра в 8 часов утра", в короткое текстовое сообщение, похожее на спам.

«Лучший дом в мире! Вы никогда не должны пропустить его. 1000–3000 кв. Футов.

Алгоритм заключается в том, что вы просто создаете грамматическую диаграмму и создаете таблицу кандидатов для каждого слова. Точно так же, как BASE64, но таблица индексов изменяется в соответствии с вашим предопределенным контекстом.

0 голосов
/ 24 декабря 2009

Подход, упомянутый Джоном Скитом, очень похож на подход Мэтью Квана " SNOW ". Оба они скрывают небольшие объемы произвольной информации в тексте, не добавляя, не удаляя и не изменяя ни одно из слов в исходном тексте. Оба кодируют секретное сообщение в обычно не относящихся к делу, обычно невидимых пробелах - дополнительный пробел и символы табуляции между словами и на концах строк.

0 голосов
/ 06 декабря 2008

В соответствии с этим поток :

Prof. Михаил Аталла эт. и др. здесь, в Пердью, было проведено много исследований водяных знаков .

Подход использует TMR ( текстовое представление ) фраз для кодирования битов путем выполнения незначительных преобразований, позиционирующих TMR на определенном расстоянии от определенной канонической формы.

(другой метод для текста водяного знака представлен здесь )

Это может быть еще один способ скрыть текст в тексте, наряду со стеганографическим методом, описанным в других ответах.

0 голосов
/ 06 декабря 2008

Если «текст» на самом деле был изображением, то вы можете скрыть данные в нем, используя стеганография - данные скрыты в двоичном файле изображения, не влияя на то, как выглядит изображение.

...