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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Формальные параметры функций. http://www.cyberforum.ru/cpp-beginners/thread565437.html
Добрый день, Уважаемые Программисты! Разбираюсь с компонентом TatukGIS, есть хелп по нему. Там есть функция формальные параметры которой я не понимаю. Среда программирования:С++Bulder __fastcall Open(const AnsiString _path, const Boolean _strict = True); Из хелпа Parameters const _path: String project path (or layer)
C++ Оператор цикла задание 1. Найти сумму целых пол-х чисел, кратных 6 и меньших 150. задание 2. http://www.cyberforum.ru/cpp-beginners/thread565430.html
C++ работа со стеком.
люди добрые, помогите, написал программу, не работает, поправьте где неправильно. суть задачи в том, чтобы занести структууру в стек и вывести: #include "stdafx.h" #include <iostream> #include <conio.h> #include <windows.h> using namespace std; struct people{
Блокирование и доступ к флешке C++
Добрый день! Задача такая: необходимо закрыть доступ к флешке, но таким образом, чтобы с помощью моей программы содержимое можно было считать. То есть кроме моей программы доступа к накопителю нет ни у кого. Вся работа выполняется в Windows 7. Всё это необходимо для того, что бы на флешке хранить ключевую информацию, как например ЭЦП. Изначально у меня было несколько вариантов, как...
C++ Мышь и изображения http://www.cyberforum.ru/cpp-beginners/thread565405.html
Всем привет! Немогу найти команды отвечающие за управление мышкой (курсором). Хочу написать программу, которая сама будет кликать в определенные места, а потом в появляющиеся объекты, если они будут заданы
C++ Нестандартные функции (сжимающие строку) Условие задачи. Написать и протестировать функцию, которая "сжимает" строку, удаляя из неё все пробелы. Символьная строка вводится с клавиатуры. В программе можно использовать стандартную функцию strlen (имя строки) из <string.h> , которая возвращает значение длины строки (количество символов в строке без нулевого байта) #include <stdio.h> char* remove_spaces(char* s) { int i = 0,... подробнее

Показать сообщение отдельно
Adagio
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 23

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

04.05.2012, 14:57. Просмотров 356. Ответов 2
Метки (Все метки)

Пишу для криптоалгоритма.Задача получить буковки из файла А, зашифровать и сохранить в файл Б, потом проверить обратное дешифрование для совпадения. Проблема криво считывает из файла видимо,через функции 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 буквы шифровал вполне нормально, проблема при считывании из файла...
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru