C++:密码学迷你项目
C++ : Mini Project on Cryptography
我需要使用带有 XOR 加密的 C++ 来加密和解密文件。我需要知道在哪里可以为它制作 GUI。
有没有办法做到这一点(可能仅通过 C++)?
关于如何加密文件有一个非常简单的答案。
此脚本使用 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。
希望对您有所帮助。
我需要使用带有 XOR 加密的 C++ 来加密和解密文件。我需要知道在哪里可以为它制作 GUI。
有没有办法做到这一点(可能仅通过 C++)?
关于如何加密文件有一个非常简单的答案。 此脚本使用 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。
希望对您有所帮助。