admin管理员组

文章数量:1581562

有的时候,我们写了一些文档,或者下载了一些秘密文件,却不想让别人看到。

如果别人偏要看,这下怎么办?!决不能“凉拌”!

这时候,我们就可以做一个文件加密器!这下别人就看不到了。嘿嘿嘿……

今天,我就教大家用C++做一个简单的文件加密器,而且加密效果还非常好!还可以把加密后的文件反过来解密。(看之前要干什么不用我多说,点赞+关注)

首先,一个文件加密器要有读取文件和保存文件的功能。代码如下:

#include <bits/stdc++.h>   //导入万能头文件
using namespace std;
vector<string> 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 <bits/stdc++.h>
using namespace std;
vector<string> 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;
}

运行一下看看效果:

我相信是个人都看不出来加密后的文件原来长什么样。效果是不是非常好?

今天就分享到这里了!记得点赞+关注!

本文标签: 做一个加密器文件