📄 code.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 + -