⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 code.cpp

📁 对文件的加密解密的演示程序,主要是练习对文件和字符串的基本操作
💻 CPP
字号:
// Code.cpp : Defines the entry point for the console application.
//
//
//  文 件 名:   Code.cpp
//  创 建 者:  
//  创建时间:   2004-3-1
//  功能描述:   对文件的加密和解密,文件只能是字符串的
//  说    明:   在下一版本中改进,并对文件的路径进行操作
//////////////////////////////////////////////////////////////

#include "stdafx.h"
#include<iostream>
#include<string>
#include<fstream>
#include<vector>
#include<iomanip>
using namespace std;
                                 
vector<vector<int> > coll(95,vector<int>(95)); 
      
void Match_Code_Str(string &code,string beg)
{
	//使编码字符串的长度与待编码文本的长度想相同
	int n,m;
	string end;
	string mstr(code);
	n=beg.length()/code.length();
	m=beg.length()%code.length();
	while(n>1)
	{
		code=mstr+code;
		n--;
	}
	code=code+code.substr(0,m);

}

void Code_Line(string beg,string code,string &end)
{
	//将编码文本的一行编码后由end带出去
	char c[1000];
	int i,j;
	for(int t=0;t<beg.length();t++)
	{
		i=static_cast<int>(code[t]);
		j=static_cast<int>(beg[t]);
	    c[t]=static_cast<char>(coll[i-32][j-32]);
	}
	end=c;
	end=end.substr(0,beg.length());
 
}
void Code_text(string code)
{
	//将整个文本编码,并写入文件
	int i=0,line;
	string text[1000];
	string midcode;
	ifstream infile("text.txt");
	ofstream outfile("code.txt");
	if(!infile)
	{
		cerr<<"Unable to open text.txt"<<endl;
		exit(0);
	}

	while(1)
	{
		getline(infile,text[i++]);
		if(infile.eof())
			break;
	}
	line=i;
	cout<<"line="<<line<<endl;
	for(i=0;i<line;i++)
	{
		midcode=code;      //每次匹配编码后,编码将发生变化,故应保存
		Match_Code_Str(midcode,text[i]);
		cout<<i<<"="<<midcode<<endl;
		Code_Line(text[i],midcode,text[i]);
	}
	for(i=0;i<line;i++)          //将一行字符串(包含空格)写入到文件中一行
		outfile<<text[i]<<endl;
}
void Decode_Line(string end,string code,string &beg)
{
	//将加密的文件一行一行地解密出来
	char c[1000];
	int i,j;
	for(int t=0;t<end.length();t++)
	{
	   i=static_cast<int>(code[t]);
	      for(j=0;j<95;j++)
			if(static_cast<char>(coll[i-32][j])==end[t])
				break;
	    c[t]=static_cast<char>(coll[0][j+32]);
	}
	beg=c;
	beg=beg.substr(0,end.length());
}
void Decode_text(string code)
{
	int i=0,line;
	string text[1000];
	string midcode;
	ifstream infile("code.txt");
	ofstream outfile("decode.txt");
	if(!infile)
	{
		cerr<<"Unable to open code.txt"<<endl;
		exit(0);
	}
	while(1)
	{
		getline(infile,text[i++]);
		if(infile.eof())
			break;
	}
	line=i;
	cout<<"line="<<line<<endl;
	for(i=0;i<line;i++)
	{
		midcode=code;
		Match_Code_Str(midcode,text[i]);
//		cout<<i<<"="<<midcode<<endl;
		Decode_Line(text[i],midcode,text[i]);
	}
//	for(i=0;i<line;i++)          //将一行字符串写入到文件中一行
//		cout<<text[i]<<endl;
}

int main(int argc, char* argv[])
{
	int i,j,mid;
	string code;                 //编码字符串
	cout<<"input the code : ";
	cin>>code;             
   for(i=0;i<95;i++)
	   for(j=0;j<95;j++)
		{
			mid=j+i+32;
			if(mid>126)
				mid=mid%126+31;
			coll[i][j]=mid;
		}
	Code_text(code);
	Decode_text(code);
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -