Форум: "Основная";
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];
ВнизКак можно шифровать текст в Memo ListBox RichEdit перед сохранением на диск. А при чтении расшифровывать. Чтоб никто не читал его. Желательно чтобы было быстро и просто. Найти похожие ветки
← →
дикое Кенгуру (2002-02-27 08:38) [0]Как можно шифровать текст в Memo ListBox RichEdit перед сохранением на диск. А при чтении расшифровывать. Чтоб никто не читал его. Желательно чтобы было быстро и просто.
← →
Reindeer Moss Eater (2002-02-27 08:45) [1]Так чтобы никто не читал - нельзя, запрещено законом.
Так чтобы не читала твоя сестра - можно быстро и просто (A XOR B)
← →
Poirot (2002-02-27 09:09) [2]Чтение понятие относительное...
(A xor B) - прочтитать можно... но поймёте-ли
ТОлько маханькое уточнение... при xor желательно писать не в текстовый файл, а в байтовый... а то хрень может с символами произойти... тогда и вы сами них... не прочитаетье
← →
Pete (2002-02-27 09:09) [3]Можно и так:
a:array [0..255] of integer; //заполняешь под RND от 0..255
b:array [0..255] of integer;
только от0 до 32 a[i]:=i;
for i:=33 to 255 do begin
c:=a[i];
b[c]:=i;
end;
берешь значение символа и заменяешь его из массиваа
обратно заменяешь из массиваb
← →
McSimm (2002-02-27 10:26) [4]>Reindeer Moss Eater (27.02.02 08:45)
Можно подробнее про закон?
>дикое Кенгуру (27.02.02 08:38)
Быстро и просто текст можно шифровать функциями RX-Lib: XorEncode (обратно - XorDecode). На выходе - текст, в качестве ключа - строка (а не символ).
← →
Reindeer Moss Eater (2002-02-27 12:46) [5]>McSimm
Вся деятельность по разработке средств стойкого крипто ("чтобы никто не читал") подлежит строгому лицензированию со стороны Государства.
← →
McSimm (2002-02-27 13:01) [6]>Reindeer Moss Eater (27.02.02 12:46)
Это точно? Или по сведениям ОБС?
Нельзя ли сослаться на норму или статью?
← →
Shirson (2002-02-27 13:47) [7]Не то что-бы обс, а скорее звон не там.
Лицензировать нужно продукт (именно криптования), который выбрасываешь на рынок. Он должен удовлетворять кучке требований и законов. А то что я в своей программе наворочу криптовалку - постелить я хотел на закон, если я не собираюсь продавать свою прогу под грифом "Супа-Шмупа-Хупа-Криптавальник отвечающий требованиям С2 и всего остального".
А при длине ключа в килобайт ломануть даже обычный XOR - весьма проблемно. Особенно если понятия не имеешь о том, какова же именно длина ключа. А при длине ключа >= длине сообщения эта затея вообще превращается в рулетку.
← →
Reindeer Moss Eater (2002-02-27 13:58) [8]Чтобы твой будущий продукт лицензировали, надо сначала получить лицензию на ЭТОТ вид деятельности.
← →
KvORubin (2002-02-27 17:15) [9]Ребята Ребята, вы о какой-то (извените за выражение)фигне болтаете,, совсем откланились от темы, мне тоже интересно бы знать (подробней) как зашифровать текст.
Если хотите, то пишите мне на KvORubin@Mail.ru я написал прошку, которая очень сложно шифрует текст, но тем не менее я уверен, что зашифрованный и посланный мною Вам текст Вы ФИГ расшифруете, а кому всё-же удастся, тому даю исходник.
А вот текст в котором что-то написанно, прочитайте:
±‘КѓЗ“’Р’ХЋР‹ВВН
Ф†С†ТќђК™КБОЋЗБПЃмXр4D
Pб/K
W
КБбБФ†Г†…ВЌ‰У–Р…П‰МБЯ“Р„РБډ֑“БВП
← →
panov (2002-02-27 17:55) [10]>дикое Кенгуру (27.02.02 08:38)
Поищи компоненты на Torry.
Можешь взять компонент на www.crypto-central.com
← →
Shirson (2002-02-27 17:59) [11]>KvORubin
А смысл? Я же сказал, обычный XOR шифрует сообщения, тем более такой длины, так, что расшифровке не поддается впринципе.
← →
Poirot (2002-02-27 20:16) [12]
> Shirson ©
Что то я вас не понимаю... Что значит не поддаётся впринципе...
По моему скромномку мнению - XOR - самая ламерская защита... так сказать на бабушку из соседней избушки, которая только о грамофоне и знает...
А в методы шифрования без каких-либо умных знаний не верю...
Самое что ненаесть простое и дельное это в крайнем случае CRC32 или используя компоненты для Делфей - PGP
← →
дикое Кенгуру (2002-02-28 04:52) [13]McSimm
Точно ! Очень полезная вещь оказалась.
включаю в проэкт файл StrUtils.pas
записываю StrUtils в uses.
и
procedure TForm1.Button1Click(Sender: TObject);
begin //Шифрую словом "KeyString"
Memo1.Text := XorEncode ( "KeyString" , Memo1.Text );
end;
procedure TForm1.Button2Click(Sender: TObject);
begin //Расшифрую словом "KeyString"
Memo1.Text := XorDecode ( "KeyString" , Memo1.Text );
end;
-------------
Оказалось что в StrUtils ещё куча полезных функций. Какие открытия я для себя делаю !
← →
дикое Кенгуру (2002-02-28 05:01) [14]Poirot
xor можно делать не только одним символом.
из Rx :
function XorEncode(const Key, Source: string): string;
var
I: Integer;
C: Byte;
begin
Result := "";
for I := 1 to Length(Source) do begin
if Length(Key) > 0 then
C := Byte(Key[1 + ((I - 1) mod Length(Key))]) xor Byte(Source[I])
else
C := Byte(Source[I]);
Result := Result + AnsiLowerCase(IntToHex(C, 2));
end;
end;
function XorDecode(const Key, Source: string): string;
var
I: Integer;
C: Char;
begin
Result := "";
for I := 0 to Length(Source) div 2 - 1 do begin
C := Chr(StrToIntDef("$" + Copy(Source, (I * 2) + 1, 2), Ord(" ")));
if Length(Key) > 0 then
C := Chr(Byte(Key[1 + (I mod Length(Key))]) xor Byte(C));
Result := Result + C;
end;
end;
← →
Poirot (2002-02-28 07:36) [15]> дикое Кенгуру
У важаемый Вы сами разницу уловите или вам пояснить....
Что значит не одним символом.... в код посмотрите... А сложность взлома не определена не XOR а тем что у неё по оби стороны... А как я понял выше говорилось о A XOR B, где A B -простые значения -const...А у вас функции - отличать надо...
Для вас помоему разницы между
A + B и A mod C^8 + A mod 2^32
нет - т.е. тут шифруется плюсом.... ууууаааууу
Хотя стойкость первого на несколько порядков ниже....
И тем более в коде работа идёт именно по байтого и никак не более
Так-что ваше заявления является ламерски...
И ключ вам надо в вашей голове хранить - лажа
Посеять его как нефига делать... то же шифровать надо... но чем тем же - опять пароль запоминай... у попа была СоБаКа он её...
← →
Shirson (2002-02-28 08:06) [16]>Poirot "Что то я вас не понимаю... Что значит не поддаётся впринципе...
По моему скромномку мнению - XOR - самая ламерская защита... так сказать на бабушку из соседней избушки, которая только о грамофоне и знает...
"
:)
Имея ключ шифрования равный или больший по длине самому сообщению, XOR выдаст шифрованный текс без каких-либо закономерностей. Т.е. ты будешь знать только длину сообщения. И декрипт будет сводиться к простому перебору всех возможных комбинаций символов, причем без возможности ОДНОЗНАЧНОЙ раскодировки.
Если ты не "бабушка из соседней избушки, которая только о грамофоне и знает", могу прислать тебе файлу скажем кило на 10 зашифрованную XOR :) Возьмешься за декрипт? ;) Защита ведь ламерская, всего 4*10^1022 вариантов ;))))))))
И можешь неверить в простоту сколько угодно, но старина Оккам был прав :)
Насчет промышленной криптограйии. XOR тут неподходит по нескольким причинам.
Для него отсутствует понятие открытый/закрытый ключ. Например для нашего банка это неприемлемо.
Криптовалка является и декриптовалкой. Плюс в простоте выливается в минус при использовании. Имея криптовальщик и ключ сообщение дешифруется на ура. В системе с открытым ключем - шишь.
Длина криптованого и декриптованого сообщения равны - не то что-бы гиганский минус, но неочень нехорошо.
Вот, в общих чертях.
С математической точки зрения XOR если не идеален, то очень хорош. С практической точки зрения вклинивается много факторов, например человеческий, которые мешают использовать XOR в голом виде. А для внутрипрограммном кодировании - да лучше и ненужно.
← →
Poirot (2002-02-28 09:10) [17]
> Shirson ©
Ключ больше или равен... Хотите сказать что но сообщение в 10 кило у ВАС ключ на что-то большее... Да? Это невыгодно... ВАМ и ключ предётся в укромном месте держать... или у ВАС хватит памяти на точное запоминание 10*1024 символов... Дерзайте...
Во-вторых я говорил в том числе и о несоответствии сказанного и написанного... вы с этим не согласны... т.е. он использует чистый XOR...
За декрипт????? Как говорит наш препод по методам оптимизации - "За принцип что-то делают только идиоты" Я теоретик, а не практик... а то зачем мне к словам придераться...
← →
Shirson (2002-02-28 11:04) [18]>Poirot
Выгодность длины ключа определяет задача. И скажите, при каких условиях ключ нужно хранить не в укромном месте? В мозгах что-ли? Гхм... вот это уже дилетанство, если честно.
Сказанного и написанного кем и где? Я, если честно, неуловил к чему это сказано.
"За декрипт" что? Пояснее сформулируйте к чему это.
← →
Reindeer Moss Eater (2002-02-28 11:16) [19]Ребята, XOR на ключе длиной равной длине сообщения (код Г.Вернама) - абсолютно невскрываемый шифр.
Это значит, что вот такой криптотекст: <hdsjghldjghdljghsd>
на одном ключе раскриптуется как "еду в на север", а на другом как "еду на юг"
И нет математических способов определить какой вариант более вероятен.
Другое дело, что пользоваться таким шифром на практике очень трудно.
← →
Poirot (2002-02-28 12:10) [20]> Shirson
> Сказанного и написанного кем и где? Я, если честно, неуловил
> к чему это сказано.
Поздравляю!!! Наезд на меня - а причину забыли??? Прикольно
См. дикое Кенгуру
> Выгодность длины ключа определяет задача.
А я про что-то другое говорил???
Ваши слова:
> Имея ключ шифрования равный или больший по длине самому
> сообщению, XOR выдаст шифрованный текс без каких-либо закономерностей.
и далее
> Если ты не "бабушка из соседней избушки, которая только
> о грамофоне и знает", могу прислать тебе файлу скажем кило
> на 10 зашифрованную XOR :) Возьмешься за декрипт? ;) Защита
> ведь ламерская, всего 4*10^1022 вариантов ;))))))))
Логично предположить -> как и что вы шифровать собрались!!!
> И скажите, при каких условиях ключ нужно хранить не в укромном
> месте? В мозгах что-ли?
Так я вас совсем не понимаю... Может мне моё образование мешает, но вроде бы я всё до сего места понимал... Вы моё сообщение прочитали перед критикой или просто так - в первых строках моего письма, уважаемая Екатерина Матвеевна... А?
И вообще - я пытаюсь выяснить прелести и недостатки, т.к. это моя будущая специальность... В споре рождается истина (кто-то говорил)...
← →
Shirson (2002-02-28 12:50) [21]>Poirot
Так, давайте не будем выяснять кто на кого и как посмотрел и вернемся к: "И вообще - я пытаюсь выяснить прелести и недостатки, т.к. это моя будущая специальность... В споре рождается истина (кто-то говорил)..."
(Чесно говоря, лекции по криптографии не фходили в мои планы на сегодня :))
Итак, имеем XOR. Как я уже говорил и как верно заметил Reindeer Moss Eater, сообщение зашифрованное с ключем, длинною, равной длине сообщения, не поддается вскрытию впринципе. Если ключ сформирован генератором случаных чисел с равномерным распределением (принимаем что период генератора >> длины ключа), на выходе мы получаем набор случайных чисел с равномерным распределением. Частотный анализ, как врочем и любой другой тут совершенно бессильны. Даже элементарный перебор не дает возможности вскрытия, из-за неоднозначности трактовки результатов (тот же пример Reindeer Moss Eater)
То что вас, Poirot, возмутило (или удивило?) что длина ключа равна длине сообщения - для меня загадка. Практика современной криптозащиты использует этот метод на всю катушку. Если же использовать однобитный ключ, или ключ, длина которого << длины сообщения, смысла в таком кодировании ровно 0 и упоминать о нем я просто не видел смысла.
Из вышесказанного встает вопрос, если XOR такой замечательный, то почему его не используют в пром.криптографии?
Есть несколько минусов:
Первый - реверсивность кодера. Если кодеру скормить криптованный текст, при наличии ключа получим декриптованное сообщение. Это неприемлемо.
Второй - один ключ. Т.е. нет понятий открытого/закрытого ключа.
Наглядный пример.
Некто А обладает открытым ключем и посылает сообщение к Б.
Открытый ключ это русско-английский словарь. С его помощью русское сообщение переводится на английский и по незащищенному каналу отсылается к Б.
Сколько бы человек не приняло это сообщение и сколько бы из них не имело русско-английского словаря, дешифровать сообщение они не смогут в разумные сроки. (я у трирую, главное общий смысл)
Однако Б имеет закрытый ключ: англо-русский словарь. С его помощью он дешифрует сообщение А в первоночальный вид.
Такая система не ломается нахрапом, даже если у злоумышленника есть сообщение, кодировщик и ключ, с которым это сообщение было зашифровано.
Если принять то, что нужно дикому Кенгуру, можно решить задачу так:
На первом этапе вставляем в дисковод дискетку и формируем на ней байтовый файл из генератора случайных чисел. Длина файла пусть 1024 кБ (не жалко :) )
На втором этапе, сформированным ключем кодируем текст по методу XOR, необходимый для шифровки и сбрасываем его на винт.
На третьем вынимаем дискетку и прячем запазуху.
Теперь мы можем быть совершенно уверены, что если злоумышленник не получит дискетки, ему ни вжисть не прочитать, что мы записали.
Обратная операция проста - считываем с винта криптованный файл, с дискеты грузим ключ и им, все тем же XORом, декодируем текст.
Я надеюсь, Poirot, между нами нет больше недопонимай? Или есть? :) Тогда пишите.
← →
Kettle of delphi (2002-02-28 13:13) [22]У меня вопрос к Shirson:
А какой смысл описан в абзаце "Если принять то, что нужно ..." кроме того, что злоумышленнику требуется уже 2 цели поймать? Куда надежнее не дискетку с файлом ключа в карман положить, а само сообщение записать на дискетку и положить его в карман :)
Ведь второй раз ленту однократногоиспользования не применяют! )))
← →
Shirson (2002-02-28 13:30) [23]>Kettle of delphi
Может случиться, что забарать сообщение нет возможности. Разве что зип использовать или CDRW :)
Может попасться маньяк, который решит по ключу FAT перелопачивать. Перелопатил, забрал дискетку и весь винт, считай, зашифрован :) Пришел, загрузился с дискетки, разлопатил FAT обратно - работай :)
Я просто привел общий случай, а частности на то и частности.
← →
Kettle of delphi (2002-02-28 13:42) [24]Дело в том, что я никак не могу частность придумать от такого общего случая :)
Ваши частности:
1. Данные на CD - милое дело! Так и делают, кстати. Только указанный алгорит не применяется при таком подходе! Обычно - ПЖП или БестКрипт... :)
2. Фат по ключу? Ерунда! Фат не несет в себе информацию, находящуюся в файлах! Это все равно, что сделать бронированную дверь метровой толщины и повесить ее на простеньких петельках, которые еле-еле держат ее вес! )))
← →
Shirson (2002-02-28 14:32) [25]Да, не несет. Он несет информацию о том, какой кусок файла где расположен. Без этого будет очень милый компот :)
← →
Kettle of delphi (2002-02-28 15:34) [26]Ясно. Если делать компот, то да, этот способ можно применить! )))
← →
Pete (2002-02-28 16:17) [27]Н-да... а человек просил быстро и просто :)))
← →
Aleksandr (2002-02-28 16:33) [28]Уважаемые коллеги!
Я на практике столкнулся с необходимостью шифрации файла данных - в нашей системе используются "вручную" собранные данные для расчетов, а разные товарищи в инете их тут же "подбирают" и открывают свои страницы, где можно проводить эти расчеты, так как ранее вся инфа хранилась просто в таблице парадокса. Механизм, который я использовал, выглядит так:
Сами данные - TList объектов, состоящих из ID1, ID2, N1, NameRus, NameInt, T1 (условно).
Каждый раз, когда данные обновляются (добавляются), на сервере генерируется новый файл, создающий случайное число (от 3 до 6) случайных криптовых цифр. Соответственно, каждый символ данных складывается с криптовой цифрой. Это стандартно (принцип того же XOR). А суть в том, что данные в файл пишутся нелинейно - во-первых, случайный порядок итемов (в программе они всегда отсортируются), а во-вторых, при их чтении делается поиск криптов в нескольких офсетах от начала файла... И с тех пор никто из конкурентов обновленную информацию не получает...
← →
Shirson (2002-03-01 09:13) [29]>Pete
Куда еще быстрее и проще чем XOR? :)
← →
22606 (2002-03-01 17:34) [30]Во всем написанном поддерживаю Shirson ©, тем более что дикое Кенгуру удовлетворенный результатом уже отвалил, а попытки Poirot © и Ko поставить под сомнение целесообразность XOR в данной ситуации выглядят бравированием на пустом месте и как раз и напоминают попытки навесить бронированную дверь на сарай, в котором кроме ржавой лопаты никто ничего хранить не собирается.
← →
Poirot (2002-03-01 19:12) [31]
> Shirson ©
> Я надеюсь, Poirot, между нами нет больше недопонимай? Или
> есть? :) Тогда пишите
Всё OK...
Вот только проблемка с генератором возникает... Где достать генератор с периодом хотябы в рекомендованый 1Mb... не кубики же бросать, хотя при этом мы и получим 36^n вариантов последовательности значений но блин, задолбаешься...
← →
Poirot (2002-03-01 19:18) [32]
> 22606 ©
Может повторюсЬ, но принимать какие либо вещи как есть, то и до краха человечества добраться будет легче... А насчёт ЛОПАТЫ вы неправы - у кого акромя лопаты и нет нечего, то как его можно осуждать за попытку повесить дверь...
В свете сабжа поднилась более обширная тема защиты инфы, и что охранять тут не имеет никакого значения...
← →
22606 (2002-03-01 19:26) [33]А почему именно 1 MB ?
И зачем именно генерировать ?
Бери любой текст (хоть Толстого) и накладывай.
Тем более дикое Кенгуру не указал размер шифруемого текста.
Может он пароли длиной 10 байт шифрует в базе ?
Да и перебор комбинаций 256^10 (при длине шифруемого текста и соответственно ключа - 10 байт) займет немало времени, тем более, что функция не дает однозначного ответа правильно или неправильно расшифрован текст. Так что не передергивайте... А если это попытка подобрать пароль к серверу, который отвечает на попытку подконектиться только через 1 секунду. Да Вы только пароль из 1 байта будете подбирать 4 минуты. А Вы говорите Мегабайт...
← →
Poirot (2002-03-01 20:26) [34]>> 22606
Я говорил о совете Shirson ©, который был указан выше... 1024кб key-file... А не для вас!!! Мне сам генератор интересен а не сообщение... я просто хочу посмотреть, каким образом можно сгенирировать такое сообщение...
А Толстого - логично, но генератором интересней
← →
дикое Кенгуру (2002-03-02 05:55) [35]22606
> Во всем написанном поддерживаю Shirson ©, тем более что
> дикое Кенгуру удовлетворенный результатом уже отвалил
Я ещё не отвалил. Просто отвлёкся немного.
Насчёт лопаты - весело )
Poirot дикое Кенгуру
> У важаемый Вы сами разницу уловите или вам пояснить....
Поясните мне примером.
Давайте эксперимент поставим, чтобы проверить теорию практикой.
Вот я зашифровал текст приведённой выше функцией. Получил строчку :
201bcc01c508161005001e0209040608c0c0cd0411190e001d001dd30105cc0fc01d4319cc2dfa2c17d31e00090c001d100502cd1ec01d11091706080ce1f1c92ad21e0609d301001dc0d1031b1a58d2d0dfcefee6310300d104090ec001d02d09021b001d12cd170ecb2ec215170919c2ede621c5cc370ece2dfa
Шифруется/Расшифровывается он строкой которая во много раз короче исходного текста. Если вы умеете расшифровывать, то расшифруйте. Тогда будет о чём поговорить. А пока не о чем. Пустые слова.
← →
дикое Кенгуру (2002-03-02 06:33) [36]Кстати может у кого ещё есть мысли по дешифровке ?
Xor с одним байтом можно угадать сделав xor со всеми 256 вариантами и просмотре визуально результат.
Если же xor хотя бы с двумя байтами то визуально просмотреть становится проблемотично. 65536 вариантов.
← →
Shirson (2002-03-02 12:27) [37]>Poirot ©
"Всё OK...
Вот только проблемка с генератором возникает... Где достать генератор с периодом хотябы в рекомендованый 1Mb... не кубики же бросать, хотя при этом мы и получим 36^n вариантов последовательности значений но блин, задолбаешься..."
Хм... вы считаете, что Дельфовый генератор имеет период менее 1048576? Мне казалось у него он на несколько порядков больше.
Если же есть сильная потребность, тут, на сайте, в разделе "новости VCL" есть "Best Random Generator v.1.0". Период 2^144 (2*10^43). Думаю хватит :)
← →
Shirson (2002-03-02 12:33) [38]Да, я был прав. Вот с Борланда:
Description:
Q. What is the formula used by the random number generator in
Turbo Pascal?
A. The random number generator in Turbo Pascal uses 32-bit
arithmetic. It maintains a 32-bit "seed", which is treated as
an unsigned integer. Each call to Random changes the seed by
the formula seed:=multiplier * seed + 1 mod 4294967296 Turbo
Pascal uses the multiplier, 134775813. The modulus,
4294967296, is 2 to the power 32. The multiplier was chosen
carefully for its nice randomness properties. The seed will
take on every 32-bit integer before repeating.
Период получается 4294967296. Вполне, вполне :)
← →
Poirot (2002-03-02 20:29) [39]
> Shirson ©
Писаному верить:)... А как он работает... Вы случаем не знаете... надеюсь не только на таймере... как я (Типа умны) читал книгу господина Д. Кнута - генератор основаный на системном времени - "хреноват"... У вас Другое мнение или я что-то не понял
> дикое Кенгуру
Во-первых, оно мне надо... Если кАму-то это надо, то он это сделает... В принципе это вам не ГОСТ... чтоб над этим голову ломать...
Во-вторых, Дешифровать Ради принципа - я ничего не делаю, ради принципа т.к считаю это не важным поводом... можно за веру, отечество, родителей, но не за принцип...
В-третьих, что это значит -
> Если вы умеете расшифровывать, то расшифруйте.
Я теоретик, и см п.1
← →
дикое Кенгуру (2002-03-03 01:19) [40]
Poirot
А если не надо, то и нечего воздух сотрясать. Значит всё что вы тут понаписали, это всё пустозвонство ничем не подкреплённое. Трепотня попросту говоря.
За свои слова не отвечаете.
Страницы: 1 2 вся ветка
Форум: "Основная";
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];
Память: 0.59 MB
Время: 0.006 c