C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

стр.: (2) < 1 [2] >
(Де-)Шифрование по ключу
gvg
Отправлено: 08.12.2006, 17:37


Машинист паровоза

Группа: Участник
Сообщений: 222



Ну, коли человеку надо...
L.u.M.
Отправлено: 09.12.2006, 17:43


Ученик-кочегар

Группа: Участник
Сообщений: 28



Спасибо, но хотелось бы получиться ссылку на готовые библиотеки или скрипты, в которых самому мало нужно дописывать, дабы опыта в шифровании у меня нет... =)
L.u.M.
Отправлено: 13.12.2006, 20:56


Ученик-кочегар

Группа: Участник
Сообщений: 28



Вопрос еще актуален!
Romikgy
Отправлено: 14.12.2006, 11:23


Дежурный стрелочник

Группа: Участник
Сообщений: 72



А в чем вопрос ?
Что еще нужно?
exp
Отправлено: 15.12.2006, 12:50


Мастер участка

Группа: Участник
Сообщений: 304



Народ, не надо выдумывать. Тем более, что это, если разобраться, не программистское дело. Мало придумать, что с чем xor-ить. надо доказать, что твой метод обладает единственностью отображения по заданному ключу, или наоборот для шифрования подходит единственный ключ. Поэтому, пока не будете свободно плавать в линейной алгебре, множествах, группах и иже с ними, ИСПОЛЬЗУЙТЕ СТАНДАРТНЫЕ АЛГОРИТМЫ.

Здесь было высказано мнение, что недолго ломануть алгоритм, если использовать короткие ключи. ЧУШЬ СОБАЧЬЯ!!! Короткий ключь дополняется до полного — это раз. Замена ОДНОГО БИТА!!!! в ключе изменит ВЕСЬ!!!! объём зашифрованных данных — это два.

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

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

В качестве альтернативы могу предложить алгоритм Rijndael (Рэндейл). Ибо исходники, прикрученные к небольшому интерфейсу а приаттаченом архиве.

Та троих за самокат сдавали smile.gif

Отредактировано exp — 15.12.2006, 12:52

User Attached Image Скачать файл
rinjdael_1.zip


L.u.M.
Отправлено: 15.12.2006, 22:36


Ученик-кочегар

Группа: Участник
Сообщений: 28



QUOTE
А в чем вопрос ?
Что еще нужно?

Вопрос в том, что с методом шифрования еще не определился. Что посоветуете? =)
Меня, впринципе, устраивает PGP... но смогу-ли перевести код с Дельфи на Билдер?! ...

exp, интересный метод. =)
У меня по нему пара вопросов: я так понимаю, что расшифрованные файлы нужно будет удалять? =)
У Вас есть "чистые" исходники, т.е. не приатаченные к проекту? Или такие можно использовать?
exp
Отправлено: 16.12.2006, 11:22


Мастер участка

Группа: Участник
Сообщений: 304



Этот метод на данный момент является стандартом шифрования в США. AES, так его разтак. biggrin.gif

QUOTE
я так понимаю, что расшифрованные файлы нужно будет удалять

Загружай в память не выкладывая в файл  — тут проблем нет.

Чистые исходники в архиве. Прикрутка к проекту заключалась файле rijndael_for_cpp.h. Чуток изменил определения функций под C++.


Исходный код принадлежит авторам алгоритма Rijndael.

Отредактировано exp — 16.12.2006, 11:26

User Attached Image Скачать файл
rijndael_src.zip


L.u.M.
Отправлено: 16.12.2006, 17:12


Ученик-кочегар

Группа: Участник
Сообщений: 28



Спасибо за исходнички! =)
QUOTE
Загружай в память не выкладывая в файл — тут проблем нет.
А как это сделать? Причем у меня в программе идет создание файлов текстовых...
exp
Отправлено: 20.12.2006, 16:37


Мастер участка

Группа: Участник
Сообщений: 304



QUOTE
А как это сделать?

Что "это".
Для начала напиши, что же ты хочешь получить. Как я понял, оставлять файлы в твоём случае нельзя, чтобы их содерживое нельзя было просмотреть. Так?
L.u.M.
Отправлено: 22.12.2006, 18:55


Ученик-кочегар

Группа: Участник
Сообщений: 28



Именно.
Т.е. пользователь создает файл текстовый, сохраняет его и файл шифруется. Как быть с незашифрованным? Удалять его и стирать из корзины или переписывать его содержимое на что-нибудь посторонее, или вовсе снести весь текст из него?
exp
Отправлено: 23.12.2006, 10:39


Мастер участка

Группа: Участник
Сообщений: 304



Ну ты даёшь! smile.gif
Текстовый редактор можно сделать и в своей программулине. Кидаешь мемо и никаких проблем. Шифруешь введённый текст и сливаешь результат шифрования в файл. Все дела. smile.gif
В том исходнике, который ты скачал, есть шифрование текста.

С другой стороны, если пишешь шифратор, закинь на форму чекбокс "Удалить файлы после шифрования". Если галка стоит — удаляй. DeleteFile
L.u.M.
Отправлено: 23.12.2006, 17:04


Ученик-кочегар

Группа: Участник
Сообщений: 28



Ты меня не понял! =)
Вот создали мы текстовый файл, нажали сохранить — вылезла форма, куда мы вводим пароль, после чего создается зашифрованный файл.
Что делать с текстовым? Удалять его в корзину, а потом и из нее или просто затереть его содержимое???
exp
Отправлено: 24.12.2006, 11:18


Мастер участка

Группа: Участник
Сообщений: 304



Нет. Это ты меня не понял.
QUOTE

Вот создали мы текстовый файл, нажали сохранить — вылезла форма

Раз вылезает НАША форма, значит приложение, в которов создан текстовый файл — НАШЕ. А раз наше, то нет необходимости СОЗДАВАТЬ файл.
L.u.M.
Отправлено: 24.12.2006, 13:16


Ученик-кочегар

Группа: Участник
Сообщений: 28



QUOTE
Нет. Это ты меня не понял.

Да, действительно.
QUOTE
Раз вылезает НАША форма, значит приложение, в которов создан текстовый файл — НАШЕ. А раз наше, то нет необходимости СОЗДАВАТЬ файл.

1) Програмно нужно создавать файлы. Это я делаю с помощью SaveDialog и SaveToFile.
2) Созданный файл шифруем в программе при нажатии на "Сохранить.
3) После этого создается зашифрованный файл ***.txt.rijndael.

Но тут возникает вопрос: что мы делаем с файлом, созданным в первом пункте? Тоже самое(создается обычный текстовый файл) при нажатии на Дешифровать!
exp
Отправлено: 25.12.2006, 00:29


Мастер участка

Группа: Участник
Сообщений: 304



Отлично. Я тебя понял.
Я предлагаю тебе отказаться от сохранения незашифрованного файла.
Ты предлагаешь так : сначала написать текст, потом сохранить, потом зашифровать, потом сохранить.
А я хочу, чтобы ты сделал так: написать текст, зашифровать, слить в файл. Никакого промежуточного файла — никаких промежуточных проблем.


Чуток лирики...
Рэндейл работает с блоком байтов. В тех исходниках используется блок размером 16 байт.
Текст — последовательность байт. Очевидно, ты будешь использовать компонент Мемо (или его наследник) для ввода текста. Текст в меме — это AnsiString, который легко можно поделить на блоки размером в 16 байт. Поэтому твои действия выглядят так:

Label нах:
1) выделил 16 байт
2) скормил их алгоритму
3) получил из алгоритма зашифрованные данные
4) Слил в файл. РУЧКАМИ!!!!! FileWrite, FileRead, FileCreate, FileOpen
5) Пошёл нах, пока не дошёл до конца строки smile.gif) // Бех обид. юмор, нах.

Всёёё!! алгоритм проще паренной репы. и никаких промежуточных файлов.
L.u.M.
Отправлено: 25.12.2006, 23:07


Ученик-кочегар

Группа: Участник
Сообщений: 28



Гы! =) Вся фишка в том, что я использую СтрингГрид и Мемо, но весь текст я при сохранении сохраняю как строку, разделенную одним символом. Так что здесь, по идеи, проблем не должно быть!

Вся проблема в том, что я не знаю как сохранять по 16 байт, а в алгоритме такого я тоже не нашел. Или плохо искал? =)
exp
Отправлено: 26.12.2006, 10:35


Мастер участка

Группа: Участник
Сообщений: 304




CODE

char MassivIs16tiBait[16]="bla-bla-bla-bla.";    // На самом деле от из 17, но это не важно. Запишем мы только 16 байт
int hFile = FileOpen("MoiFail.txt",fmOpenErite);
if(hFile!=-1)
{
     FileWrite(hFile,(char*)&MassivIs16tiBait,16);
     // Последний параметр указывает, сколько байт начиная с адреса &MassivIs16tiBait будут записаны будут записаны в файл
     FileClose(hFile); // Не забывай закрыть файл
}


Прочти про функции FileRead,FileWrite,FileOpen,FileCreate и откажись от использования методов сохранения, встроенных в компонент.

QUOTE

Или плохо искал? =)

Угу.. smile.gif плохо. посмотри код на обработку существующего файла.
L.u.M.
Отправлено: 09.01.2007, 12:13


Ученик-кочегар

Группа: Участник
Сообщений: 28



Спасибо за ответ!
Немного не понял: файл не будет создаваться(расшифрованный), все данные будут загружаться прямо в программу?
Получается, что придется убирать дополнение названия файла для шифруемого файла?

Я ,конечно, извиняюсь, но не мог бы ты приатачить проект с реализованным тобой методом, а то я никак не разберусь со своими вопросами...
Спасибо!
Romikgy
Отправлено: 09.01.2007, 13:46


Дежурный стрелочник

Группа: Участник
Сообщений: 72



QUOTE (L.u.M. @ 09.01.2007, 11:13)
Спасибо за ответ!
Немного не понял: файл не будет создаваться(расшифрованный), все данные будут загружаться прямо в программу?
Получается, что придется убирать дополнение названия файла для шифруемого файла?

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

воть есть правда на дельфи , но работает smile.gif
http://forum.vingrad.ru/index.php?showtopi...ndpost&p=814655
Boyko
Отправлено: 09.01.2007, 15:49


Станционный диспетчер

Группа: Участник
Сообщений: 88



Сделай самое простое (похоже EXP):

1. Открываешь файл decrypted.txt как двоичный (незашифрованный).
2. Открываешь файл encrypted.bin как двоичный (новенкий, зашифрованный).
цикл:
3. Читаешь блок (8 или 16) из decrypted.txt.
4. Шифрование блока.
5. Пишешь блок в encrypted.bin.
конец цикла
6. Пишешь что-нибудь, напр. 'Z' в decrypted.txt (от началa до конца)
7. Удаляешь decrypted.txt.
8. Где ключ? Ответственость твоя... smile.gif

Отредактировано Boyko — 09.01.2007, 16:24
стр.: (2) < 1 [2] >
Вернуться в Вопросы программирования в C++Builder