Форум программистов, компьютерный форум CyberForum.ru

Реализация Криптоалгоритма - C++

Восстановить пароль Регистрация
 
Adagio
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 23
04.05.2012, 14:57     Реализация Криптоалгоритма #1
Пишу для криптоалгоритма.Задача получить буковки из файла А, зашифровать и сохранить в файл Б, потом проверить обратное дешифрование для совпадения. Проблема криво считывает из файла видимо,через функции read/write;
Вот Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
void main()
{       
    int result;
    double speed;
    Blowfish BF;//объект класса
    DWord temp;
    ifstream f;
    f.open("123.txt",ios::binary); 
    string s;f>>s;
    f.close();
    const   char *buff=new char[s.length()];
    buff=s.c_str();
    char *buff2=new char[strlen(buff)];
    int i;
    for( i=0;i<strlen(s.c_str());i++)
        buff2[i]=buff[i];
    buff2[i]='\0';
    cout<<"Initial 123.txt file "<<buff<<endl;
    
    //////////////////////////////////////////////////////////////////////////////////
    int* mas=new  int[strlen(buff2)];
    for(i=0;i<s.length();i++)
        mas[i]=(unsigned)buff[i]-65;
    if(s.length()%2)exit(1);
        
    //To Dword
    ofstream f2;//output stream
    f2.open("321.txt",ios::binary|ios::trunc);
    BF.Set_Passwd("123");
    
    char temp1[11],temp2[11];
        
    for( i=0;i<strlen(buff2);i+=2)
    {
        temp.word0.word=mas[i];
        temp.word1.word=mas[i];
        BF.Encrypt((void*)&temp,8);
        cout<<"Crypted Sequence: "<<temp.word0.word<<" "<<temp.word1.word<<endl;
        itoa(temp.word0.word,temp1,10);
        
        itoa(temp.word1.word,temp2,10);
        
        cout<<"As char "<<temp1<<" "<<temp2<<endl;
        cout<<strlen(temp1)<<" "<<strlen(temp2)<<endl;
        
        f2.write(temp1,strlen(temp1));
        f2.write(temp2,strlen(temp2));
        
        getch();
    }
    f2.close();
    cout<<strlen(temp1)<<strlen(temp2)<<endl;
    cout<<endl;
    
    ifstream f3;f3.open("321.txt",ios::binary);
    char temp3[11],temp4[11];
    int* mas2=new int[strlen(buff2)];
    /////////////////////////////////////////////////////////////////////
    for(i=0;i<strlen(buff);i+=2)
    {
    
    f3.read(temp3,strlen(temp1));
    cout<<strlen(temp3)<<" "<<temp3<<endl;getch();
    f3.read(temp4,strlen(temp2)+1);
    cout<<strlen(temp4)<<" "<<temp4;getch();
    cout<<"strlen(temp3&temp4) "<<strlen(temp3)<<" "<<strlen(temp4)<<endl;
    cout<<"temp3&temp4 "<<temp3<<" "<<temp4<<endl;getch();
    
    
    mas2[i]=atoi(temp3);
    mas2[i+1]=atoi(temp4);
    cout<<"Read from 321.txt "<<temp3<<" "<<temp4<<endl;
    cout<<"As Int "<<mas2[i]<<" "<<mas2[i+1]<<endl;getch();
    }
    f3.close();
    cout<<mas2[0]<<"  "<<mas2[1]<<" "<<mas2[2]<<"  "<<mas2[3]<<"  "<<endl;
    cout<<"Before Decrypting"<<endl;getch();
     
    ofstream f4;
    f4.open("!!!.txt",ios::binary);
    cout<<"Decripted sequence:\n";
    for( i=0;i<strlen(buff2);i+=2)
    {
        temp.word0.word=mas2[i];
        temp.word1.word=mas2[i+1];
        BF.Decrypt((void*)&temp,8);
        cout<<"As Dword.word "<<temp.word0.word<<temp.word1.word<<endl;
    
    char tempxx,tempxy;
    temp.word0.word+=65;
    temp.word1.word+=65;
    tempxx=temp.word0.word;
    tempxy=temp.word1.word;
    cout<<"After Itoa"<<tempxx<<" "<<tempxy<<endl;
    f4<<tempxx<<tempxy;
    
    }
    f4.close();
Код избыточен, но 2 буквы шифровал вполне нормально, проблема при считывании из файла...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2012, 14:57     Реализация Криптоалгоритма
Посмотрите здесь:

C++ Реализация класса
C++ Реализация
C++ реализация класса
Реализация crc C++
C++ реализация предикатов
реализация слайдера C++
C++ Реализация вектора
C++ Реализация алгоритма

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
04.05.2012, 15:11     Реализация Криптоалгоритма #2
Проблема номер один, которая чаще всего возникает в подобных программах, это использование strlen для определения длины зашифрованных данных. В шифрованных данных, как правило, встречается символ 0, который является признаком конца строки для strlen().
Adagio
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 23
04.05.2012, 22:47  [ТС]     Реализация Криптоалгоритма #3
Была идея вставить в файл разделители по типу пробела или новой строки.
К примеру 4 буквы с пробелами в зашифрованном виде:
942334619 1629572029 -340748027 -1082182493
Но как то осмысленно считать не вышло.

Добавлено через 1 час 53 минуты
нашел ошибку. спс.
Yandex
Объявления
04.05.2012, 22:47     Реализация Криптоалгоритма
Ответ Создать тему
Опции темы

Текущее время: 12:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru