2016-11-03 3 views
-7

Мне нужно зашифровать и дешифровать файлы с помощью C++ с помощью XOR Encryption. Мне нужно знать, где я могу сделать для него графический интерфейс.C++: мини-проект по криптографии

Есть ли способ сделать это (возможно, только на C++)?

+0

Отключить тему для этого сайта. –

+0

@RicharCritten Где я должен спрашивать? –

+0

Если вы ищете кого-то для написания программного обеспечения для вас, то вам следует попросить инженера-программиста. Если вы пытаетесь написать программное обеспечение, вы должны изучить C++ либо через класс, либо из чтения учебных книг на C++. –

ответ

0

Существует довольно простой ответ на вопрос, как шифровать файлы. Этот скрипт использует XOR encryption для шифрования файлов. Зашифруйте файл во второй раз, чтобы его расшифровать.

#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 

void encrypt (string &key,string &data){ 
float percent; 
for (int i = 0;i < data.size();i++){ 
percent = (100*i)/key.size();    //progress of encryption 
data[i] = data.c_str()[i]^key[i%key.size()]; 
if (percent < 100){       
    cout << percent << "%\r";    //outputs percent, \r makes 
}else{          //cout to overwrite the 
    cout<< "100%\r";      //last line. 
} 
} 

} 
int main() 
{ 
string data; 
string key = "This_is_the_key"; 
ifstream in ("File",ios::binary); // this input stream opens the 
            // the file and ... 
data.reserve (1000); 
in >> data;      // ... reads the data in it. 
in.close(); 
encrypt(key,data);     
ofstream out("File",ios::binary);//opens the output stream and ... 
out << data;      //... writes encrypted data to file. 
out.close(); 


return 0; 
} 

Эта строка кода, где происходит шифрование:

data[i] = data.c_str()[i]^key[i%key.size()]; 

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

key[i%key.size()] 

Но есть много методов шифрования, например, вы можете добавить 1 к каждому байту (шифрование) и вычесть 1 из каждый байт (дешифрование):

//Encryption 
for (int i = 0;i < data.size();i++){ 
    data[i] = data.c_str()[i]+1; 
} 
//Decryption 
for (int i = 0;i < data.size();i++){ 
    data[i] = data.c_str()[i]-1; 
} 

Я думаю, что это не очень полезно, чтобы показать прогресс, потому что это быстро.

Если вы действительно хотите создать графический интерфейс, я бы порекомендовал Visual Studio.

Надеюсь, что это было полезно.

+0

Как я могу показать прогресс в графическом интерфейсе при шифровании и расшифровке? –

+0

С индикатором выполнения (Visual Studio обеспечивает простой способ). – Legolas

+0

Какая IDE (интегрированная среда разработки (Code :: Blocks, Visual Studio и т. Д.)) Вы используете? – Legolas

Смежные вопросы