关于密码学的小项目

C++ : Mini Project on Cryptography

本文关键字:小项目 密码学      更新时间:2023-10-16

我需要使用带有异或加密的c++加密和解密文件。我需要知道在哪里我可以为它做一个GUI。

是否有办法做到这一点(可能通过c++单独)?

如何加密文件有一个非常简单的答案。该脚本使用异或加密对文件进行加密。对文件进行第二次加密以解密。

#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。

希望对你有帮助。