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

 
TIniFile в двоичную систему, КАК???
.piero
Отправлено: 25.06.2004, 13:47


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

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



Нужно сохранить файлик с настройками, допустим *.ini, в такой вид, чтоб его тяжко было прочитать без присутствия проги, но и чтобы читался и писался он этой прогой. Вот так. Осталось только код написать... Спасибо.
** guest
Отправлено: 25.06.2004, 14:04


Не зарегистрирован







Так и пишите. Кто же лучше вас знает как вы его будете шифровать.
PeroManiak
Отправлено: 02.07.2004, 02:08


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

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



...:::XOR:::...
Старый добрый ХОР.
CODE

AnsiString Crypt(AnsiString in, AnsiString pass)
{
AnsiString out;
for (int x=1;x<in.Length()+1;x++)
       {
       out += (char)(in[x] ^ pass[x%pass.Length()+1]);
       }
return out;
}

CODE

TIniFile *iniptr=new TIniFile (в хелпе посмотри);
iniptr->WriteString ("Хрень", "Ее тип", Crypt ("БлаБлаБла", "СуПеР ПаРоЛь, До КоТоРоГо НиКтО Не ДоГаДаЕтСя"));
AVC
Отправлено: 02.07.2004, 09:05


Ветеран

Группа: Модератор
Сообщений: 1583



Чистый xor самый худший выбор. Не выдерживает маломальски серьезной атаки. Получится защита от дурака или не очень настырного пользователя. На некоторых зашифрованная информация действует как красная тряпка на быка. Лучше ставить более серьезное шифрование или не ставить вообще. Постулат: стоимость защиты не должна превосходить стоимости защищаемого объекта.
Gedeon
Отправлено: 02.07.2004, 12:35


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (AVC @ 02/07/2004, 10:07)
Чистый xor самый худший выбор. Не выдерживает маломальски серьезной атаки. Получится защита от дурака или не очень настырного пользователя. На некоторых зашифрованная информация действует как красная тряпка на быка. Лучше ставить более серьезное шифрование или не ставить вообще. Постулат: стоимость защиты не должна превосходить стоимости защищаемого объекта.

Тут хочу полностью поддержать AVC, ведь на самом деле иногда какое-то шифрование именно и вызывает желание чего-то расшифровать biggrin.gif . Если юхер изменил какие-то настройки на неправильные, на мой взгляд его личная проблема, если прога для работы то ложить файл туда, где он просто не сможет его изменить.
PeroManiak
Отправлено: 02.07.2004, 13:07


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

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



Ну, люди, и пар'ажаюсьь... Согласен, чистый хор — худший выбор, но это типа как пример, а вообще есть и CRC32, могу исходник выложить, если кому надо.
AVC
Отправлено: 02.07.2004, 13:44


Ветеран

Группа: Модератор
Сообщений: 1583



GnuPG
Samual
Отправлено: 03.07.2004, 22:40


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

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



Ксорить с ключем — конечно глупость. Но можно же ксорить и без ключа, сам файл при помощи ксора можно очень красиво искарячить.
Пусть он станет в 4-ре раза больше, но помудится придется.
PeroManiak
Отправлено: 04.07.2004, 00:39


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

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



Ну и толку-то? Захоренный файл-то этот кому дался? Хоть взять этот параметр — все равно, мне не понятно. Что преследует .piero мне не известно. По крайней мере у меня, когда я увижу абракадабру вместо значения в поле, сразу возникает желание что-то изменить:).
QUOTE

Но можно же ксорить и без ключа, сам файл при помощи ксора можно очень красиво искарячить.

МОЖНО! Только тебе сначало НУЖНО будет заксоренный файл расксорить в темп, где он прочитается:). — задача: читать из INI — как ты ini->ReadInteger прочитаешь эту абракадабру?
Можно вообще полнейший изврат придумать: Ксорить сначала параметр одним паролем, а потом и весь файл, но только уже с другим.
ЗЫ. Защищать настройки, с моей точки зрения, глупо: юзер накрутил — пусть сам и расхлебывает!

Отредактировано PeroManiak — 04/07/2004, 02:04
PeroManiak
Отправлено: 04.07.2004, 00:59


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

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



Уупс.. Не правильно понял Execusяюсь smile.gif
Но все равно моя твоя не понимай:
QUOTE

Ксорить с ключем — конечно глупость.

CODE

out += (char)(in[x] ^ pass[x%pass.Length()+1]);

Угадай, чему будет равно i, когда i=pass.Length(); ??? — как ты сказал без ключа.
А целочисленное деление — это все равно деление. Потом, надо понимать, что без ключа, грош цена этому заксоренному файлу.
Если я ошибаюсь, поправьте.

Вернуться в Вопросы программирования в C++Builder