Я — эксперт в области разработки веб-приложений и безопасности в интернете. Каждый месяц мой блог посещают около 90 тысяч человек. Работаю техническим директором в «Системах документооборота», занимаюсь электронным правительством.
# Example by Evgeny Stepanischev
from itertools import groupby, izip_longest
import sys
import codecs
sys.stdin = codecs.getreader('utf-8')(sys.stdin)
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
toenc = 'Evgeny Stepanischev'
input = sys.stdin.read()
def decode(input):
return ''.join(chr(31+len(list(x[1])))
for x in groupby(input, lambda x: x == u"\u200b") if x[0])
def encode(input):
if len(input) < len(toenc):
raise ValueError()
return ''.join(x[0] + x[1]
for x in izip_longest((u"\u200b" * (ord(x)-31)
for x in toenc), input, fillvalue=''))
print(encode(input) if input.find(u"\u200b") == -1 else decode(input))
Если на вход ему подать текст без пробелов нулевой длины, он добавит в него скрытый текст, иначе попытается его оттуда извлечь.
Евгений Геращенко (инкогнито)
23 января 2012, 03:12
bolk (bolknote.ru)
23 января 2012, 07:44,
ответ предназначен Евгению Геращенко
Стеганография, а не стенография.В два ночи с температурой я ещё и не такое напишу.
bolk (bolknote.ru)
23 января 2012, 07:45,
ответ предназначен Евгению Геращенко
Кстати, если бы был какой-нибудь еще символ с тем же самым смыслом, то количество лишних байтов можно было бы сильно сократить, а то 120 × (2-3) байтов на один символ — это как-то чересчур.Да, я вчера поленился уже об этом писать.
lapinmax@yandex.ru (инкогнито)
23 января 2012, 08:39
bolk (bolknote.ru)
23 января 2012, 08:50,
ответ предназначен lapinmax@yandex.ru
unno (unno.me)
23 января 2012, 09:25
bolk (bolknote.ru)
23 января 2012, 09:47,
ответ предназначен unno (unno.me):
Можно использовать азбуку Морзе, тогда кол-во дополнительных символов в тексте резко уменьшитсяДа, но мне сильно лениво было в два ночи это программировать :) Я вообще о кодах Хаффмана подумал сначала.
vtd (инкогнито)
23 января 2012, 10:09
bolk (bolknote.ru)
23 января 2012, 10:17,
ответ предназначен vtd
Fulcrum (fulc.ru)
23 января 2012, 17:04
Конечно, важна длина текст — таким способом не скрыть текст, длина которого много больше исходной
Можно использовать азбуку Морзе, тогда кол-во дополнительных символов в тексте резко уменьшится. Например, видимые символы — это тире, а невидимые пробелы — точки.
bolk (bolknote.ru)
23 января 2012, 17:16,
ответ предназначен Fulcrum (fulc.ru):
Не «много больше», а просто «больше», нет? Ну или «больше или равно», если запретить нулевые пробелы в конце строки.Да, была два ночи и я болею, к чёрту такие подробности :)
Agonych (инкогнито)
27 января 2012, 06:42
bolk (bolknote.ru)
27 января 2012, 07:41,
ответ предназначен Agonych
Вот все-же этот Питонский стиль кодированя, от конца к началу, он для меня совершенно не натурален.Это не питоновский стиль кодирования, а функциональщина. Можно записать иначе, более похоже на Яву и ПХП.
Трудорг (инкогнито)
Ничего себе! Не знал о таком символе. Интересно. Спасибо. :)23 января 2012, 02:54
Скорейшего выздоровления!