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

Ваш аккаунт

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

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

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

Азы криптографии. Простая шифровка

249
18 августа 2005 года
DissDoc
639 / / 01.10.2004
Есть строка teast, если есть символ a заменяем его на 10110110... Как это реализовать? я сделал так, но это ошибочный вариант...
Код:
#include <tchar.h>
#include <iostream>
#include <stdio.h>
#include <string.h>

using namespace std;

char *strcrypt(char *source)
{
    char *original = source;
// Это естесно ошибка, но я хотел показать сам принцив, что я хочу
    while (*source) {
        if (strcmp(source, 'a'))
            strcpy(source, '10010101');
        source++;
    }
    return (original);
}

int main(){
    char linein[81], conv[81];
        cin >> linein;
    strcpy(conv, strcrypt(linein));
    cout << conv << endl;

    return 0;
}
249
18 августа 2005 года
DissDoc
639 / / 01.10.2004
Нашел ошибку одну, вместо strcmp использую теперь функцию strchr, но компилятор на строку strcpy(source, '11001101')
Компилятор ругается так d:\Visual Studio\crypto\main.cpp(14): error C2015: too many characters in constant
406
18 августа 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by DissDoc
Нашел ошибку одну, вместо strcmp использую теперь функцию strchr, но компилятор на строку strcpy(source, '11001101')
Компилятор ругается так d:\Visual Studio\crypto\main.cpp(14): error C2015: too many characters in constant




strcpy(source, "11001101");

406
18 августа 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by vitaly2003s
strcpy(source, "11001101");



Ты хотел что то вроде этого:
Функция заменяет все символы 'a' на 11001101 в строке и возвращяет указатель на новую строку содержащюю преобразованный текст.
Правда это не буде являться хорошим алгоритмом для шифровки данных,так как их будет пото практически невозможно восстановить.

char* strcrypt(char* source)
{

int count=0;
char* dest=source;
while(*dest)
{
if(*dest=='a')
count++;
dest++;
}

dest=new char [strlen(source)-count+sizeof("11001101")*count+1];
char* orgdest=dest;
while(*source)
{
if(*source=='a'){
strcpy(dest,"11001101");
dest+=sizeof("11001101")-1;
source++;
}
else {
*dest=*source;
dest++;
source++;
}
}
return orgdest;
}

488
18 августа 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by vitaly2003s
Правда это не буде являться хорошим алгоритмом для шифровки данных,так как их будет пото практически невозможно восстановить.

Если полученный текст невозможно будет восстановить, тогда не проще его затереть символами напр. rand()%96+32?

 
Код:
char *strcrypt(char *source)
{
  char *original = source;
  while(*source)
  {
    if(*source=='a')*source=0xCD;
    source++;
  }
  return original;
}
406
18 августа 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by Mоngооsе
Если полученный текст невозможно будет восстановить, тогда не проще его затереть символами напр. rand()%96+32?
 
Код:
char *strcrypt(char *source)
{
  char *original = source;
  while(*source)
  {
    if(*source=='a')*source=0xCD;
    source++;
  }
  return original;
}



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

488
18 августа 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by vitaly2003s
В принципе для него было бы неплохо начать с побайтного ксора.

Да это проще всего.

 
Код:
char *strcrypt(char *source, char sifr)
{
  char *original = source;
  while(*source)
  {
    *source=*source^sifr;
    source++;
  }
  return original;
}
8.3K
18 августа 2005 года
Delphi-cs
45 / / 26.07.2005
Наро у меня мысль!!!
Знаете как зашифровать пароль??? Я придумал!!!
Так:

Создаём 'золотой' текстовый файл (вобщем не важно какой. Та пишем:
10111010
10001101
00110010
01010101
Это всё буква a!(Чем больше значений тем выше шифровка)(Вместо нулёв и колов можо писать всё чо хошь)

Всё это деёствует так! :

Прога "берёт" слово и заменяет букву а или любую другую на рандомно выбраное значение из значений из файла относящихся к этой букве!!! В итоге мы получаем слово типа этого:
1010101010101001010...10101010.
Расшифровать так:
Делит прога слолво на части по 8 символов. И сравнивает со значениями из золотого файлика!

Главное файлик хацкерам не отдать!!!:!!!: :angel:
Как идея???
255
19 августа 2005 года
Dart Bobr
1.4K / / 09.04.2004
Цитата:
Originally posted by Delphi-cs
Наро у меня мысль!!!
Знаете как зашифровать пароль??? Я придумал!!!
Так:

Создаём 'золотой' текстовый файл (вобщем не важно какой. Та пишем:
10111010
10001101
00110010
01010101
Это всё буква a!(Чем больше значений тем выше шифровка)(Вместо нулёв и колов можо писать всё чо хошь)

Всё это деёствует так! :

Прога "берёт" слово и заменяет букву а или любую другую на рандомно выбраное значение из значений из файла относящихся к этой букве!!! В итоге мы получаем слово типа этого:
1010101010101001010...10101010.
Расшифровать так:
Делит прога слолво на части по 8 символов. И сравнивает со значениями из золотого файлика!

Главное файлик хацкерам не отдать!!!:!!!: :angel:
Как идея???


А зачем так мучиться, если есть RSA? Там и криптостойкость повыше.

8.3K
19 августа 2005 года
Delphi-cs
45 / / 26.07.2005
Цитата:
Originally posted by Dart Bobr
А зачем так мучиться, если есть RSA? Там и криптостойкость повыше.


А зачем тут мучаца??? Этот алгоритм написать ка два пальца сам знаешь что...
Ещо между этими 8 символами можно вставлять ещчо несколько "ложных"
Но есть ещо вариант::D
Короче ети во цифр ставить в рандомной последовотельности "ну почти..." А инфу о расшифровке записывать в отдельный файлик!
Попробуй разгадай!:) Нехороший человек не меньше часа будет мучаца!
И вообще написанное своими руками всегда лучше написаного чужими...:D

292
19 августа 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by Delphi-cs
А зачем тут мучаца??? Этот алгоритм написать ка два пальца сам знаешь что...
Ещо между этими 8 символами можно вставлять ещчо несколько "ложных"
Но есть ещо вариант::D
Короче ети во цифр ставить в рандомной последовотельности "ну почти..." А инфу о расшифровке записывать в отдельный файлик!
Попробуй разгадай!:) Нехороший человек не меньше часа будет мучаца!
И вообще написанное своими руками всегда лучше написаного чужими...:D



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

255
19 августа 2005 года
Dart Bobr
1.4K / / 09.04.2004
Цитата:
Originally posted by Matush
Можно еще получившуюся ерунду запаковать самодельным архиватором, тогда еще сложнее будет.


ИМХО, это все - лишние проблемы себе на голову. Алгоритм можно будет кракнуть без проблем и архиватор(упаковщик) тут не поможет. Алгоритм должен быть криптостойким, то-есть чтоб его можно было только брутфорсить и очень долго. Как RSA. Все остальное - фигня.

249
19 августа 2005 года
DissDoc
639 / / 01.10.2004
Я немного изменил все... Прога работает! НО! Не могу поставить конец строки '\0'. Ибо не знаю куда это вставить! Получается какая-то абракадабра =((( А функция такая! Изменяет а и b =)))
Код:
int grade, i = 0;
    char str[255];
    while ((grade = getchar()) != '\n')
    {
        switch(grade)
        {
            case 'a':
                strcat(str, "12");
                break;
            case 'b':
                strcat(str, "34");
                break;
        }
            cout << str;
    }


PS =) ребят, давайте посельезней.. А то флейм какой-то пошел =)))
Я в своем алгоритме меняю а на 12 и b на 34
276
19 августа 2005 года
Rebbit
1.1K / / 01.08.2005
Цитата:
Originally posted by Delphi-cs

Ещо между этими 8 символами можно вставлять ещчо несколько "ложных"
Но есть ещо вариант::D
Короче ети во цифр ставить в рандомной последовотельности "ну почти..." А инфу о расшифровке записывать в отдельный файлик!
Попробуй разгадай!:) Нехороший человек не меньше часа будет мучаца!



Ты понимаеш что файлик-ключ может получится побольше инфы. А его ведь тоже передавать надо если он для каждого сеанса иной. И вообще зачем инфу так роздувать (в 8 раз). А расшифровивать то самому даже с ключом извесним как трудно.

А почему бы не написать велосипед типа блочного шифра перестановки или даже зсув какойто. Тоже ведь интересно.

Цитата:

И вообще написанное своими руками всегда лучше написаного чужими...:D



Ех не всегда. Меня с моим кодом на етом форуме уже обламали (и очень справедливо).
Не лучше, но приятнее - ето точно.

276
19 августа 2005 года
Rebbit
1.1K / / 01.08.2005
Цитата:
Originally posted by Dart Bobr
Алгоритм можно будет кракнуть без проблем и архиватор(упаковщик) тут не поможет.



Алгоритм можно. А упаковщик - ето как упаковать.
Упаковщик тем и прикольний, что в роли ключа алгоритм выступает (немножко код по другому написать и уже не розожмет).

12K
19 августа 2005 года
dolpin_spb
9 / / 18.08.2005
Так это сломать нужно или описат как работает???
Если это математика - попробуй засунуть на вход в MatLab...
Если промерка знаний...
12K
19 августа 2005 года
dolpin_spb
9 / / 18.08.2005
Ты на каком С++ пишешь???
Твой код что-то прям из "Книга Delphi по написанию програма на С ++"
7.6K
30 августа 2005 года
Helicopterr
50 / / 21.08.2005
Цитата:
Originally posted by Delphi-cs
Наро у меня мысль!!!
Знаете как зашифровать пароль??? Я придумал!!!
Так:

Создаём 'золотой' текстовый файл (вобщем не важно какой. Та пишем:
10111010
10001101
00110010
01010101
Это всё буква a!(Чем больше значений тем выше шифровка)(Вместо нулёв и колов можо писать всё чо хошь)

Всё это деёствует так! :

Прога "берёт" слово и заменяет букву а или любую другую на рандомно выбраное значение из значений из файла относящихся к этой букве!!! В итоге мы получаем слово типа этого:
1010101010101001010...10101010.


идея файлик-ключ не хороша, т.к. файл, подлежащий шифрованию, может оказаться гораздо больше файлика-ключика. Это будет означать, что ключ начнёт повторяться, а повторяющийся ключ - залог успешного взлома. Есть идея использовать обычный ключ в 256 символов, но каждый раз когда ключ будет вступать в фазу повторения добавлять к алгоритму шифрования оператор побитового сдвига <<=. Так можно "замазать" повторения ключа и не придётся таскать за собой библиотеку файликов-ключиков.

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