Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Алгоритмы и примеры шифрования, кодировщик и раскодировщик 
:(
    Опции темы
Rome
  Дата 4.11.2005, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 3.11.2005

Репутация: -1
Всего: нет



Привет Всем!!! smile
Решил создать топик "Алгоритмы и примеры шифрования", думаю будет полезен Всем кто шифрует инфо.

Если Вы сделали свой алгоритм шифрования, и хотите поделиться с народом форума Vingrad то сделайте это прямо сейчас! smile

Не имеет значения, на каком языке программирования написан пример.

Внимание!!!
Запрещено обговаривать алгоритм.

Это сообщение отредактировал(а) Rome - 6.11.2005, 14:06
PM MAIL ICQ   Вверх
Akina
Дата 4.11.2005, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(Rome @ 4.11.2005, 14:15)
Если Вы сделали свой алгоритм шифрования

то 99,(9)% за то, что он - дерьмовый. ну и смысл?
я понимаю модификация стандартных и ПОДМЕНА их в исходном коде... в этом есть какой-то практический смысл... а то что-то вроде "все украли еще до вас".

Или ты о чем-то ином?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Mayk
Дата 4.11.2005, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 2
Всего: 134



Цитата(Rome @ 4.11.2005, 17:15)
Запрещено обговаривать алгоритм.

А какой тогда смысл, если не обсуждать? Всё равно что кричать в пустоту.

Цитата(Akina @ 4.11.2005, 17:40)
я понимаю модификация стандартных и ПОДМЕНА их в исходном коде

Не дошло. Можешь пояснить смысл слова "подмена"? smile


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
DeadSoul
Дата 4.11.2005, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 1
Всего: 11



Цитата(Rome @ 4.11.2005, 13:15)
Запрещено обговаривать алгоритм.

А смысл тогда? СТАНДАРТНОЕ требование криптоанализа - алгоритм известен.


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
maxim1000
Дата 4.11.2005, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата
СТАНДАРТНОЕ требование криптоанализа - алгоритм известен

интересно smile
насколько я знаю, стандартное требование криптоанализа - алгоритм известен

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


--------------------
qqq
PM WWW   Вверх
codelord
Дата 4.11.2005, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

Репутация: нет
Всего: 39



Темка конечно интересная.
Ладно вот простенкий алгоритм который я встроил в написанный мною блокнот, как он называется мне неизвестно (потому как сам выдумал smile ) на сколько он стоек тоже не знаю. на форме Три Edit и две кнопки (зашифровать и расшифровать)
в первом Edit ключ для зашифровки во втором путь к исходному файлу ну а в третьем готовый файл, писал в Cpp Builder.
зашифровать
Код

void __fastcall TEncrypt::Button1Click(TObject *Sender)
{
if(Edit1->Text=="") {Label2->Caption="Необходимо ввести ключ шифрования"; Abort(); }
if(Edit2->Text=="") {Label2->Caption="Необходимо выбрать файл для шифрования"; Abort();}
if(Edit3->Text=="") {Label2->Caption="Необходимо выбрать конечный файл для шифрования"; Abort();}
        else
        {
        int len=Edit1->Text.Length();    int m=1;
        int *key= new int[len];
        int i;
        AnsiString st=Edit1->Text;
         for(i=1;i<len;i++)
                {
                key[i]=st[i];
                }
       FILE *in, *out;
        in=fopen(Edit2->Text.c_str(),"rb");
        out=fopen(Edit3->Text.c_str(),"wb");
        int c;
        while((c=getc(in))!=EOF)
                {
                 c=c+key[m];
                 if(c>256)c=c-256;
                 m++;
                 if(m>=(len-1)) m=1;
                 
                 putc(c,out);
                }
        fclose(in);
        fclose(out);
        }
//Form1->SynEdit1->Lines->LoadFromFile("c:\\windows\\new2.txt");
Close();        
}

и расшифровать:

Код

void __fastcall TEncrypt::Button2Click(TObject *Sender)
{
if(Edit1->Text=="") {Label2->Caption="Необходимо ввести ключ шифрования"; Abort(); }
if(Edit2->Text=="") {Label2->Caption="Необходимо выбрать файл для шифрования"; Abort();}
if(Edit3->Text=="") {Label2->Caption="Необходимо выбрать конечный файл для шифрования"; Abort();}
        else
        {
        int len=Edit1->Text.Length();    int m=1;
        int *key= new int[len];
        int i;
        AnsiString st=Edit1->Text;
         for(i=1;i<len;i++)
                {
                key[i]=st[i];
                }
       FILE *in, *out;
        in=fopen(Edit2->Text.c_str(),"rb");

        out=fopen(Edit3->Text.c_str(),"wb");
        int c;
        while((c=getc(in))!=EOF)
                {
                 c=c-key[m];
                 if(c<=0)c=c+256;
                 m++;
                 if(m>=(len-1)) m=1;
                 
                 putc(c,out);
                }
        fclose(in);
        fclose(out);
        }
Close();        
}

только не надо меня ругать smile
вот попробуйте что-нибудь зашифровать а потом расшифровать незная ключа.. и алгоритма smile


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
Mayk
Дата 4.11.2005, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 2
Всего: 134



Писал на коленке можно сказать(примерно такое просто уже использовал). Вроде работает smile
Код

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>

void explode_key(const char* key, char* ekey)
{
    int idx=4;
    int key_gen[8] = {
        0x32749808,
        0x98789123,
        0xd39842df,
        0x3984911f,
        0xff3849d2,
        0xcdb23324,
        0xdd929323,
        0x54324424
    };

    memset(ekey,0,128);

    while(*key){
        for(int i = 0; i != 8; ++i){
            int j = key_gen[i];
            j ^= key[0] + ekey[1];
            j ^= ((ekey[0] ^ key[1]) << 8);
            key_gen[i] = j;

            uint8_t* a = (uint8_t*)&j;

            int m = (idx % 4) * 32;
            for(int k=0; k!=4;++k){
                ekey[m+i*4+k] ^= (a[k]-*key);
            }
        }
        ++key;
        ++idx;
    }
    
}


void crypt(const char* buffer, int buflen, char* buf2, const char* key)
{
    char explodedkey[128];
    explode_key(key, explodedkey);
    int i = 0;
    int l = strlen(key);
    int ki=0;
//    printf("%s\n",key);

    while(--buflen >=0){
        buf2[buflen]=buffer[buflen]^explodedkey[i];
        i+=l + explodedkey[(i+1)%128] -explodedkey[(i-1)%128]+key[ki++];
        i %= 128;
        ki %= l;
    }

}

int main()
{
    
    char key[] = "hello world";
    char buf[] = "000000000009389dfjakdljds;faklvcznm,vdsaf98u4qoidjfijdfkljadsoifu09ufdsa";
    char* buf2 = malloc(sizeof(buf));
    char* buf3 = malloc(sizeof(buf));
    crypt(buf,sizeof(buf), buf2, key);
    crypt(buf2,sizeof(buf), buf3, key);
//    fwrite(buf2, sizeof(buf), 1, stderr);
//    fwrite(buf3, sizeof(buf), 1, stderr);        
}

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

Кстати, а ты уверен что
if(c>256)c=c-256;
несет смысл? Всё равно в файл запишутся только младшие 8 бит (0-255), которые не будут изменены после вычитания.
(не проверял)


Это сообщение отредактировал(а) podval - 5.11.2005, 00:05


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Akina
Дата 4.11.2005, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(Mayk @ 4.11.2005, 15:51)
Не дошло. Можешь пояснить смысл слова "подмена"?

Поясняю бредовым примером.

Скажем стоит сервер на Линухе. На нем Апача с разными наворотами. В т.ч. модуль ПХП.

Очередной какер в этой версии ПХП нашел дыру, которая при соответствующим образом составленной посылке при исполнении определенного скрипта позволит прогуляться до \etc\passwd и высосать его к себе. Сообщил, скотина, на весь мир. Через день появился патч, админ дыру прикрыл... но за это время какой-то гад успел получить этот файл. Запускает он на него брутфорс и протчая, пробуя и MD5, и SHA и, если повезет ему, получает пароль рута и тип шифрования... на самом деле неважно как и неважно к чему, важно что получен пароль, гад подключается телнетом и... не получается ничего. А потому что там вместо стандартного метода использован модифицированный. Причем модифицированный по такому алгоритму, что модификация может выполняться автоматически и быть столь же разнообразной, как, например, генератор SIDов...

Нет, детали бредовые, это ясно и ежу, мне просто лень сейчас расписывать реально рабочий сценарий, но вот разработка автоматизированной системы модификации алгоритма шифрования мне представляется действительно интересной... не надо говорить что это невозможно - может помните блаженной памяти времена ДОС и самомодифицирующиеся вирусы - те, у которых в 2 последовательных генерациях в теле не было ни одного совпадающего на одинаковой позиции байта? при этом 2^24 вариантов модификации шифровщика и столько же - дешифровщика, и все это менее чем килобайт. Подмена же стандартного алгоритма модифицированным мне представляется менее интересной - пусть и с обходами всяких там разных систем контроля целостности и протчая - но и эта задача тоже не чисто техническая...

А обсуждение очередного велосипеда с квадратными колесами - мне не кажется интересной. Тем более что уже есть схема, когда при квадратных колесах велосипед едет с вертикальным отклонением оси в пределах плюс-минус 3% диаметра колеса (пардон, диагонали квадрата).


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
podval
Дата 5.11.2005, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62




 ! 
 
Соблюдаем приличия и не оффтопим!

PM WWW ICQ   Вверх
Alexanderus
Дата 21.11.2005, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 21.11.2005

Репутация: -1
Всего: нет



а давайте напряжем извилины и подумаем как зашифровать и расшифровать на делфи
с двумя ключами на основе двойной транспозиции, у меня есть некоторые наработки, но
при использовании ентера более 100 раз (к примеру) частьб текста теряется, уже не знаю что делать, помогите!?! smile
PM MAIL   Вверх
podval
Дата 21.11.2005, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



Цитата(Alexanderus @ 21.11.2005, 12:39)
при использовании ентера более 100 раз (к примеру) частьб текста теряется, уже не знаю что делать, помогите!?!


Это случайно не из оперы "написал прогу, а она не рабоатет"?


PM WWW ICQ   Вверх
DeadSoul
Дата 21.11.2005, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 1
Всего: 11



Цитата(Akina @ 4.11.2005, 23:39)
Очередной какер в этой версии ПХП нашел дыру, которая при соответствующим образом составленной посылке при исполнении определенного скрипта позволит прогуляться до \etc\passwd и высосать его к себе

Тогда поздно пить боржоми, почки уже отвалились. Хотя, прописать список IP, с которых разрешено админить сервак....
Цитата(podval @ 5.11.2005, 00:06)
Соблюдаем приличия и не оффтопим!

Тут вся тема сплошной оффтоп


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1499 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.