2016-11-03 77 views
-7

我需要使用C++和XOR加密来加密和解密文件。我需要知道我可以在哪里为它制作GUI。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; 
} 

我认为这是没有什么用处,因为它是快速的显示进度。

如果你真的想做一个GUI,我会推荐Visual Studio。

希望有帮助。

+0

如何在加密和解密时在GUI上显示进度? –

+0

用进度条(Visual Studio提供了一种简单的方法)。 – Legolas

+0

您正在使用哪种IDE(集成开发环境(Code :: Blocks,Visual Studio等))? – Legolas