Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Шифрование текста

290
23 июня 2009 года
Patr1ot
458 / / 09.02.2008
Всем привет. Задача: Моя программа сохраняет некий текстовый файл на
финт, но этот файл можно прочитать даже блокнотом, задача заключается в том как мне зашифровать всю инфу этого файла, так что бы не навредить работе программы. Собственно в файле хранятся настройки программы.
294
23 июня 2009 года
Plisteron
982 / / 29.08.2003
Цитата: Patr1ot
Всем привет. Задача: Моя программа сохраняет некий текстовый файл на
финт, но этот файл можно прочитать даже блокнотом, задача заключается в том как мне зашифровать всю инфу этого файла, так что бы не навредить работе программы. Собственно в файле хранятся настройки программы.


Имеется множество вариантов. Например, LibTomCrypt, DCPcrypt, GnuPG. Из сертифицированных (и платных) решений: Домен-К, Верба, КриптоПро, Крипто-Си.
Можно ещё на Торри покопаться (и и в этом разделе).

290
23 июня 2009 года
Patr1ot
458 / / 09.02.2008
Извените меня конечно, но я вообще с этим впервые сталкиваюсь, вы не могли бы мне конкретный пример привести желательно подробно, я в поисковиках находил примеры шифрования но так у меня ничего и не получилось.
535
23 июня 2009 года
Нездешний
537 / / 17.01.2008
А зачем, собственно, шифровать настройки? Для того, чтобы нельзя было их посмотреть блокнотом? Для того, чтобы их нельзя было ручками подправить (точнее, не нельзя, а сложно)? Или еще для чего?

Простой xor не подойдет? Или контрольная сумма какая-нибудь?

ЗЫ "сохраняет файл на [COLOR="Black"]ф[/COLOR]инт" - это круто ;)
290
23 июня 2009 года
Patr1ot
458 / / 09.02.2008
Ну чтоб сложнее было поправить, скачал DCPcypt 2 Beta 4.
А как ей пользоваться то, нинаю:confused::confused::(
290
23 июня 2009 года
Patr1ot
458 / / 09.02.2008
Народ подскажите с помощью какого шифровальщика\алгоритма можно
расшифровать этот файл, Очень надо. Не могу сам никак все что могу перепробовал.
244
23 июня 2009 года
UAS
2.0K / / 19.07.2006
А тут дешифраторов нет. Я лично не представляю как можно расшифровать. Не известен ни ключ, ни алгоритм шифрования. А если ещё ключ большой, тогда вообще можно полвека подбирать его и алгоритм.

По мне, так выбирайте сами нужный шифр. Если программа слишком дорога и эти настройки так важны, так не пожалейте денег купить готовые программы типа Крипто-Про и прочее, которые гарантированно защитят ваши файлы.
Если все не так серьезно, то возьмите и напишите обычный перестановочный шифр (перестановка символов, сдвиг символов, поблочная перестановка) + xor - это как минимум отобъет максимальное число людей, так как лень кому-либо будет в этом разбираться.
Ну или найдите в сети исходники AES (они есть, например, тут) или RSA (его и самого не сложно реализовать для небольшой длины ключа (чтобы время создания не было большим)). Хотя RSA немного для других целей, но тоже можно шифровать данные на нём спокойно.
240
23 июня 2009 года
aks
2.5K / / 14.07.2006
Цитата: UAS
или RSA (его и самого не сложно реализовать для небольшой длины ключа (чтобы время создания не было большим)). Хотя RSA немного для других целей, но тоже можно шифровать данные на нём спокойно.


Вот именно что для других целей. Файл шифровать им смысла неимеет - больше минусов.

244
23 июня 2009 года
UAS
2.0K / / 19.07.2006
Цитата: aks
Вот именно что для других целей. Файл шифровать им смысла неимеет - больше минусов.


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

Ну а если серьезно, то берите любой симметричный алгоритм. Вообщем, вот тут все ответы: http://ru.wikipedia.org/wiki/Симметричные_криптосистемы
Там же, я думаю, можно и реализации шифров найти, и почитать про них, и выбрать самый подходящий.

290
23 июня 2009 года
Patr1ot
458 / / 09.02.2008
Дайте пожалуйста исходник готовой программы в которой применено шифрование. Просто я чет даже не представляю как это работает.
244
23 июня 2009 года
UAS
2.0K / / 19.07.2006
Patr1ot, сложно было походить по ссылкам, которые я дал в своих постах? (В чатсности в первом).
http://ru.wikipedia.org/wiki/XTEA
535
23 июня 2009 года
Нездешний
537 / / 17.01.2008
Код:
int iSetting = 789;
unsigned char ucKey = 0x13;

void Crypt(unsigned char *ByteArray, unsigned int Length)
{
     for (unsigned i = 0; i < Length; i++)   ByteArray ^= ucKey;
}

void SaveSettings()
{
     ofstream fout("settings.cfg");
     Crypt( (unsigned char*)&iSetting, sizeof(int) );
     fout << iSettings;
     fout.close();
}

void LoadSettings()
{
     ifstream fin("settings.cfg");
     fin >> iSettings;
     Crypt( (unsigned char*)&iSetting, sizeof(int) );
     fin.close();
}
307
23 июня 2009 года
Artem_3A
863 / / 11.04.2008
о, родной хор!=) а вообще так же можно применить еще гамирование, то есть наложение на шифр некую шумовую гамму!=) или если замутить на пароле, то md5 + гамирование ну или xor!=) хотя конечно все это будет вскрыто старым добрым дизасемблером!=)
535
23 июня 2009 года
Нездешний
537 / / 17.01.2008
При желании Crypt можно заменить, разумеется :) Топикстартер, по-моему, не понял, как вообще применять шифрование, а не конкретный алгоритм.

К тому же, как я понимаю, ключ будет храниться где-то в программе, так что криптостойкость алгоритма особой роли не играет :)
240
23 июня 2009 года
aks
2.5K / / 14.07.2006
Цитата: UAS
Ну да, так-то он для цифровых подписей предназначен.


Ну конечно. Цифровые подписи - это лишь одна из побочных областей его применения. )

Цитата: UAS

Но реализовать алгоритм RSA несложно


да многие криптоалгоритмы реализовать не сложно. В том числе и симметричные.

Цитата: UAS

для малых ключей,


Для малых ключей он смысла не имеет.

Цитата: UAS

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


Реализации вон можно в OpenSSL взять. =)

244
23 июня 2009 года
UAS
2.0K / / 19.07.2006
Цитата: aks
Для малых ключей он смысла не имеет.


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

[SIZE="1"]Offtopic:
сам вот недавно по универу реализовывал задачку: "Подсчет точек на эллиптической кривой алгоритмом Схоуфа". Вообщем, нарыл в инете прогу=) Она считала количество точек для поля, допустим, F(503) менее чем за секунду)) Мой же скромный вариант, написанный в лоб для проверки моих ручных расчетов, подогнанный под мою скромную эллиптическую кривую над полем F(7) считал от 20 до 30 секунд:D[/SIZE]

92
23 июня 2009 года
Тень Пса
2.2K / / 19.10.2006
Цитата: Patr1ot
Народ подскажите с помощью какого шифровальщика\алгоритма можно
расшифровать этот файл, Очень надо. Не могу сам никак все что могу перепробовал.


этот файл по-моему вообще rotate255 зафигачен =))) что-то по типу xor но только char + int, то есть например

 
Код:
char a = 'a' + 255;


почему-то так думается )
240
23 июня 2009 года
aks
2.5K / / 14.07.2006
Цитата: UAS
Да любая криптосистема не имеет смысла при малых ключах)


Ну все же для RSA да и вобще для ассиметричных криптоалгоритмов ключи требуются как минимум на порядок (ато и более) длинные чем для симметричных при той же криптостойкости.

Цитата: UAS

Просто я думаю, что для текущей задачи большой ключ не нужен, не такая уж там тайна великая будет храниться.


Так какой тогда вобще смысл от всей замороченности с открытыми ключами RSA, если он на офисном компе будет ломаться за паруминут? =)
Тогда уж проще воспользоваться неизвестностью алгоритма или лобовым XORом =)

Цитата: UAS

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


Для этого есть готовые и давно отлаженные реализации. В том числе и открытые.

244
23 июня 2009 года
UAS
2.0K / / 19.07.2006
Цитата: aks
Ну все же для RSA да и вобще для ассиметричных криптоалгоритмов ключи требуются как минимум на порядок (ато и более) длинные чем для симметричных при той же криптостойкости.

Ну так-то да. Длина ключа определяется самим алгоритмом ширфрования. Для RSA пока что 1024 бит хватает, для того же ГОСТа нашего 256, если мне память не изменяет)

[SIZE="1"]Оффтоп: ждем квантового компьютера) Сразу всех порешает)
Да и вообще чет я уже отошел сам от темы топика:)[/SIZE]

5
24 июня 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: UAS
[SIZE=1]Оффтоп: ждем квантового компьютера) Сразу всех порешает)[/SIZE]

Ничо, уже существует квантовая криптосистема, основанная, на поляризации квантов. Она ему не позубам.;)

240
24 июня 2009 года
aks
2.5K / / 14.07.2006
Цитата: UAS
Для RSA пока что 1024 бит хватает


Не хватает кстати. =)

244
24 июня 2009 года
UAS
2.0K / / 19.07.2006
aks, уже не хватает? о_О Видать, отстал я от жизни и развития технологий)) Хотя вон на вики написано, что на 2009 год пока хватает)
294
25 июня 2009 года
Plisteron
982 / / 29.08.2003
Цитата: aks
Не хватает кстати. =)

Криптоалгоритм на основе эллиптических кривых над конечным полем помогут гиганту мысли. ;) Говорят, у 256-разрядного ключа такая же криптостойкость, как у 2048-разрядного ключа RSA.

290
29 июня 2009 года
Patr1ot
458 / / 09.02.2008
Цитата: Нездешний
Код:
int iSetting = 789;
unsigned char ucKey = 0x13;

void Crypt(unsigned char *ByteArray, unsigned int Length)
{
     for (unsigned i = 0; i < Length; i++)   ByteArray ^= ucKey;
}

void SaveSettings()
{
     ofstream fout("settings.cfg");
     Crypt( (unsigned char*)&iSetting, sizeof(int) );
     fout << iSettings;
     fout.close();
}

void LoadSettings()
{
     ifstream fin("settings.cfg");
     fin >> iSettings;
     Crypt( (unsigned char*)&iSetting, sizeof(int) );
     fin.close();
}



Все равно непойму, как я понял обработчик Void LoadSettings() - это загрузка файла который мы зашифровали, обработчик Void SaveSetings() - это сохранение и зашифровка файла который нужно зашифровать.
Void Crypt - Это метод шифрования.
Просто я чет недогоняю, загрузка сохранение файла это понятно,
но обработчик VOID CRYPT и переменные iSetting и ucKey, должны ведь находиться должны находиться в одном обработчике события, причем вместе с Загрузкой и сохранением иначе переменные iSettings и ucKey не
будут являтся переменными.

пример:

Код:
int iSetting = 789;
unsigned char ucKey = 0x13;



     for (unsigned i = 0; i < Length; i++)   ByteArray ^= ucKey;


     ofstream fout("settings.cfg");
     Crypt( (unsigned char*)&iSetting, sizeof(int) );
     fout << iSettings;
     fout.close();




     ifstream fin("settings.cfg");
     fin >> iSettings;
     Crypt( (unsigned char*)&iSetting, sizeof(int) );
     fin.close();


Пробовал обоими способами, Билдер пишет ошибка.
Може, для наглядности скинете мне исходник именно вашего примера.
535
29 июня 2009 года
Нездешний
537 / / 17.01.2008
Суть: ваши настройки, записываемые в файл - это массив байт. При осуществлении шифрования каждый байт в этом массиве должен быть заменен согласно некоторому закону. После этого этот массив байт можно записывать в файл.
Т.е. при записи порядок такой:
1. Любую настройку (т.е. переменную какого-то типа) интерпретируем как массив байт (в общем случае - слов, двойных слов и т.д.).
2. Меняем в этом массиве байт байты согласно некоторому закону.
3. Записываем этот массив байт в файл.
В коде это выглядит примерно так:
 
Код:
SomeType Setting;
unsigned char *ucPointer = (unsigned char*)&Setting;// 1
Crypt( ucPointer, sizeof(SomeType) ); // 2
// 3 теперь по адресу &Setting лежит преобразованный массив байт - можно записать его в файл каким угодно способом

Порядок чтения обратный:
1. Вычитать из файла массив байт
2. Преобразовать его согласно некоторому закону
3. Интерпретировать этот массив байт как объект некоторого типа
 
Код:
SomeType Setting;
unsigned char *ucPointer = (unsigned char*)&Setting;
// вычитать каким-то способом из файла
Crypt( ucPointer, sizeof(SomeType) );


Где вы расположите ваши переменные различных настроек - это уже ваше дело. Будут ли они локальными, глобальными или членами класса (например, формы) - решать вам.

Константу ucKey - ключ для шифрования - можно объявить внутри метода Crypt. Или, опять же, где вам удобнее

ЗЫ Посмотрите, что такое "метод" и что такое "обработчик события", и чем они отличаются
290
29 июня 2009 года
Patr1ot
458 / / 09.02.2008
Цитата: Нездешний
Суть: ваши настройки, записываемые в файл - это массив байт. При осуществлении шифрования каждый байт в этом массиве должен быть заменен согласно некоторому закону. После этого этот массив байт можно записывать в файл.
Т.е. при записи порядок такой:
1. Любую настройку (т.е. переменную какого-то типа) интерпретируем как массив байт (в общем случае - слов, двойных слов и т.д.).
2. Меняем в этом массиве байт байты согласно некоторому закону.
3. Записываем этот массив байт в файл.
В коде это выглядит примерно так:
 
Код:
SomeType Setting;
unsigned char *ucPointer = (unsigned char*)&Setting;// 1
Crypt( ucPointer, sizeof(SomeType) ); // 2
// 3 теперь по адресу &Setting лежит преобразованный массив байт - можно записать его в файл каким угодно способом

Порядок чтения обратный:
1. Вычитать из файла массив байт
2. Преобразовать его согласно некоторому закону
3. Интерпретировать этот массив байт как объект некоторого типа
 
Код:
SomeType Setting;
unsigned char *ucPointer = (unsigned char*)&Setting;
// вычитать каким-то способом из файла
Crypt( ucPointer, sizeof(SomeType) );


Где вы расположите ваши переменные различных настроек - это уже ваше дело. Будут ли они локальными, глобальными или членами класса (например, формы) - решать вам.

Константу ucKey - ключ для шифрования - можно объявить внутри метода Crypt. Или, опять же, где вам удобнее

ЗЫ Посмотрите, что такое "метод" и что такое "обработчик события", и чем они отличаются



У меня пишет 11 Ошибок, Нездешний посмотри пожалуйсто исходник я вроде все правельно сделал.

535
29 июня 2009 года
Нездешний
537 / / 17.01.2008
Нда... Если вы не в состоянии объявить переменные, какой может быть разговор о шифровании?
Код:
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TButton *Button1;
        TButton *Button2;
        void __fastcall Button1Click(TObject *Sender);
        void __fastcall Button2Click(TObject *Sender);
private:    // User declarations
        int iSetting;
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
        void Crypt(unsigned char * ByteArray, unsigned int Length);
};
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
        iSetting = 789;
}
//---------------------------------------------------------------------------

void TForm1::Crypt(unsigned char * ByteArray, unsigned int Length)
{
        const unsigned char ucKey = 0x13;
        for (unsigned i = 0; i < Length; i++)   ByteArray ^= ucKey;
}
//---------------------------------------------------------------------------
240
29 июня 2009 года
aks
2.5K / / 14.07.2006
Цитата: Plisteron
Криптоалгоритм на основе эллиптических кривых над конечным полем помогут гиганту мысли. ;) Говорят, у 256-разрядного ключа такая же криптостойкость, как у 2048-разрядного ключа RSA.


Да как помогут, в данном случае вобще не нужна ассиметричная криптография. А у симметричной ключи итак такого порядка.
Так то все асиметричные алгоритмы основанны на NP-полных задачах. Или на задаче факторизации или дискретного логарифмирования обычно. Так что сложность у них одинаковая.
Просто у группы эллиптических нет недостатков группы чисел по модулю n на основе которых можно ускорить немного подбор. За счет этого у криптоалгоритмов (дискретного логарифмирования) над ней могут быть ключи меньше. Но не факт что не найдутся решения подобные и для эллипттических кривых. Да и собственно проблема P =? NP то до сих пор не разрешена. =)

294
29 июня 2009 года
Plisteron
982 / / 29.08.2003
Цитата: aks
Да как помогут, в данном случае вобще не нужна ассиметричная криптография. А у симметричной ключи итак такого порядка.
Так то все асиметричные алгоритмы основанны на NP-полных задачах. Или на задаче факторизации или дискретного логарифмирования обычно. Так что сложность у них одинаковая.
Просто у группы эллиптических нет недостатков группы чисел по модулю n на основе которых можно ускорить немного подбор. За счет этого у криптоалгоритмов (дискретного логарифмирования) над ней могут быть ключи меньше. Но не факт что не найдутся решения подобные и для эллипттических кривых. Да и собственно проблема P =? NP то до сих пор не разрешена. =)


Копирайт, как я понимаю, принадлежит А. П. Алфёрову? ;)
PS. несмотря на недостаточную изученность "эллиптической криптографии", она принята в качестве стандарта для ЭЦП.

240
29 июня 2009 года
aks
2.5K / / 14.07.2006
Цитата: Plisteron
Копирайт, как я понимаю, принадлежит А. П. Алфёрову? ;)


Копирайт чего? Криптоалгоритмов на основе эллиптических кривых? Да нет, не ему видимо. Текста написанного? Дык я на клавиатуре набрал. На основе 5 лет изучения этого дела будучи студентом еще в универе и последующей работе. =) Ни с каким Алферовом лично не знаком. =)

Цитата: Plisteron

PS. несмотря на недостаточную изученность "эллиптической криптографии", она принята в качестве стандарта для ЭЦП.


В курсе, чеб её не быть принятой то у нас. Не хуже с изученностью чем с факторизацией. да и группы элиптических кривых не один десяток лет изучают, пожалуй наверно даже сотню. =)

294
29 июня 2009 года
Plisteron
982 / / 29.08.2003
Цитата: aks
Текста написанного?

Да.

Цитата: aks
Дык я на клавиатуре набрал. На основе 5 лет изучения этого дела будучи студентом еще в универе и последующей работе. =)

Приятно читать посты знающего человека. Вносит, понимаешь, приятный контраст.

Цитата: aks
Ни с каким Алферовом лично не знаком. =)


Я имел в виду Алфёрова Александра Павловича, одного из авторов учебника: А.П. Алфёров, А.Ю. Зубов, А.С. Кузьмин, А.В. Черёмушкин, "Основы криптографии".

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог