有的时候,我们写了一些文档,或者下载了一些秘密文件,却不想让别人看到。
如果别人偏要看,这下怎么办?!决不能“凉拌”!
这时候,我们就可以做一个文件加密器!这下别人就看不到了。嘿嘿嘿……
今天,我就教大家用C++做一个简单的文件加密器,而且加密效果还非常好!还可以把加密后的文件反过来解密。(看之前要干什么不用我多说,点赞+关注)
首先,一个文件加密器要有读取文件和保存文件的功能。代码如下:
#include //导入万能头文件
using namespace std;
vector codestr; //用来存放读取的信息
void incode(string inpath){ //读取文件函数
ifstream in(inpath); //用读的方式打开文件
string tmp;
while (getline(in, tmp)){
codestr.push_back(tmp);
}
in.close(); //关闭文件流
}
void outcode(string outpath){ //输出文件函数
ofstream out(outpath); //用写的方式打开文件
out.clear(); //清空文件
//代码
out.close(); //关闭文件流
}
int main(){
string s;
while (1){
cout << "请输入加密(或解密)的文件路径:";
getline(cin, s);
incode(s);
outcode(s);
cout << "加密(或解密)完毕!" << endl << endl;
codestr.clear(); //清空
}
return 0;
}
获取文件信息后,该怎么加密呢?
这里给大家推荐一个既简单,又好用的方法——取反加密。
具体的原理是:把字符串的每一位字符(char)所对应的ASCII码值取反,在把得到的值转换为字符,保存下来。
代码如下:
for (int i = 0; i < codestr.size(); ++i){
//遍历字符串的每一位字符
for (int j = 0; j < codestr[i].size(); ++j){
out << (char)~codestr[i][j]; //取反,并输出取反后的字符
}
out << endl;
}
我们的文件加密器就这样做好了!代码大概长这样:
#include
using namespace std;
vector codestr;
void incode(string inpath){
ifstream in(inpath);
string tmp;
while (getline(in, tmp)){
codestr.push_back(tmp);
}
in.close();
}
void outcode(string outpath){
ofstream out(outpath);
out.clear();
for (int i = 0; i < codestr.size(); ++i){
for (int j = 0; j < codestr[i].size(); ++j){
out << (char)~codestr[i][j];
}
out << endl;
}
out.close();
}
int main(){
string s;
while (1){
cout << "请输入加密(或解密)的文件路径:";
getline(cin, s);
incode(s);
outcode(s);
cout << "加密(或解密)完毕!" << endl << endl;
codestr.clear();
}
return 0;
}
运行一下看看效果:
我相信是个人都看不出来加密后的文件原来长什么样。效果是不是非常好?
发表回复