`
jgsj
  • 浏览: 1051480 次
文章分类
社区版块
存档分类
最新评论

对文本文档加密的c++程序

 
阅读更多

//
#include<iostream.h>
#include<fstream.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#include<iomanip.h>
#include<stdio.h>

ifstream&operator>>(ifstream&fin,bool&aa)
{
int a;
fin>>a;
if(a==0)
aa=false;
else
aa=true;
return fin;
}
class BUFFER
{
protected:
char Buffer[50];
BUFFER *next;
BUFFER *front;
public:
BUFFER();
~BUFFER();
bool linkto(BUFFER&);
friend istream&operator>>(istream&,BUFFER&);
friend ostream&operator<<(ostream&,BUFFER&);
friend ifstream&operator>>(ifstream&,BUFFER&);
friend ofstream&operator<<(ofstream&,BUFFER&);
friend class makesecorytext;
};
BUFFER::BUFFER()
{
next=NULL;
front=NULL;
}
BUFFER::~BUFFER()
{
BUFFER *This;
This=this;
if(This->front==NULL)//只能让第一个成员去释放空间
{
while(This->next!=NULL)
{
This=This->next;
}
while(This->front!=NULL)
{
if(This->next!=NULL)
{
delete This->next;
}
This=This->front;//传到上一个
}
if(This->next!=NULL)//删除最后一个
{
delete This->next;
}
}
}
bool BUFFER::linkto(BUFFER&aa)
{
next=&aa;
aa.front=this;
return true;
}
istream&operator>>(istream&stin,BUFFER&aa)
{
cout<<"请输入字符串(50个字符以内)"<<endl;
stin>>setw(49)>>aa.Buffer;
return stin;
}
ostream&operator<<(ostream&stout,BUFFER&aa)
{
stout<<aa.Buffer;
return stout;
}
ifstream&operator>>(ifstream&fin,BUFFER&aa)
{
fin>>setw(49)>>aa.Buffer;
return fin;
}
ofstream&operator<<(ofstream&fout,BUFFER&aa)
{
fout<<aa.Buffer;
return fout;
}


class makesecorytext
{
char filename[20];//加密或解密的文件名
int scory;//密码,初始化为0
bool whether;//判断文件是否加密
BUFFER first;//作为缓冲内存
public:
makesecorytext();
~makesecorytext();
bool readtext();
bool secoryorbreaktext(int);//加密或解密
bool savetext();
bool display();
};
makesecorytext::makesecorytext()
{
whether=true;
filename[0]=0;
this->scory=0;
}
makesecorytext::~makesecorytext()
{
}
bool makesecorytext::readtext()
{
BUFFER *This;
This=&first;
ifstream fin;
int i=0;
system("cls");
cout<<"/n/n/n/t/t请输入要读取的文件/n/n/t/t";
cin>>filename;
fin.open(filename,ios::nocreate);
if(fin.fail())
{
cout<<"/n/n/t/t打开文件失败!!!"<<endl;
cout<<"/n/t/t";
system("PAUSE");
return false;
}
if(fin.eof())
{
cout<<"/n/n/t/t打开的是空文件!!!/n/n/t/t";
system("PAUSE");
fin.close();
return false;
}
while(!fin.eof())
{
fin>>(*This);
if(!fin.eof())
This->next=new BUFFER();
else
break;
if(This->next==NULL)
{
cout<<"/n/n/t/t计算机内存不够,读文件失败!!!"<<endl;
system("PAUSE");
fin.close();
return false;
}
This->linkto(*This->next);
This=This->next;
}
fin.close();
return true;
}
bool makesecorytext::secoryorbreaktext(int se)
{
char a=0;
char FIlename[20];
int i=0,k=0,SECORY;
BUFFER *This;
ifstream filein;
filein.open("secory.txt",ios::nocreate);
if(filein.fail())
{
cout<<"/n/n/t/t无法进行加密解密设置!!!"<<endl;
system("PAUSE");
return false;
}
This=&this->first;
if(se==0)//表示加密
{
for(;a!='1'&&a!='2';)
{
system("cls");
cout<<"/n/n/t/t请选择加密的强度:/n"
<<"/n/t/t1:普通加密/t2:密码加密"<<endl;
a=getch();
switch(a)
{
case '1':scory=0;break;
case '2':cout<<"/n/t/t请输入口令:"<<endl;//设置加密的密码,
cin>>scory;break;
default:cout<<"/n/n/t/t输入有误,重新输入!!!"<<endl;break;
}
whether=true;//表示加密了
}
}
if(se==1)//表示开始解密
{
cout<<"请输入口令:"<<endl;
cin>>SECORY;
for(;!filein.eof();)
{
filein>>FIlename>>this->scory;
filein>>whether;
cout<<FIlename;
if(strcmp(FIlename,filename)==0&&SECORY==scory)
{
k=1;
break;
}
}
filein.close();
if(k==0)
{
cout<<"输入的口令不正确或此文件没有加密!!!"<<endl;
system("PAUSE");
return false;
}
if(whether==false)
{
cout<<"文件没有加密!!!"<<endl;
system("PAUSE");
return false;
}
whether=false;//表示解密了
}
if(scory==0)
{

while((This->next)!=NULL)//开始加密
{
for(i=0;i<49&&(This->Buffer[i])!=0;i++)//因为读文件时确保了最后一个元素为字NULL符
{
This->Buffer[i]=~(This->Buffer[i]);
}
This=This->next;//把指针移到下一个
}
for(i=0;i<49&&(This->Buffer[i])!=0;i++)
{
This->Buffer[i]=~(This->Buffer[i]);
}
}
else
{
a=(this->scory)%255;
while((This->next)!=NULL)//开始加密
{
for(i=0;i<49&&(This->Buffer[i])!=0;i++)//因为读文件时确保了最后一个元素为字NULL符
{
This->Buffer[i]=(This->Buffer[i])^a;
}
This=This->next;//把指针移到下一个
}
for(i=0;i<49&&(This->Buffer[i])!=0;i++)
{
This->Buffer[i]=(This->Buffer[i])^a;
}
this->whether=true;
}

if(se==0)
cout<<"/t/t完成文件加密"<<endl;
else
cout<<"/t/t完成文件解密"<<endl;
system("PAUSE");
return true;
}
bool makesecorytext::savetext()
{
ofstream fout,fileout;
BUFFER *This;
This=&this->first;
fileout.open("secory.txt",ios::nocreate,ios::app);
if(fileout.fail())
{
cerr<<"存放密码的文件不存在或出问题,保存文件失败!!!";
system("PAUSE");
return false;
}
fileout<<endl<<filename<<" "<<scory<<" "<<whether;
fout.open(filename,ios::nocreate);
if(fout.fail())
{
cout<<"打开文件失败,加密失败并可能破坏原文件!!!"<<endl;
system("PAUSE");
return false;
}
while((This->next)!=NULL)
{
fout<<endl<<This->Buffer;
This=This->next;
}
fout<<endl<<This->Buffer;
cout<<"/t/t文件已保存"<<endl;
system("PAUSE");
fout.close();
fileout.close();
return true;
}
bool makesecorytext::display()
{
BUFFER *This;
This=&this->first;
if(strlen(This->Buffer)==0)
{
cout<<"/t/t没有内容显示!!!"<<endl;
system("PAUSE");
return false;
}
while(This->next!=NULL)
{
cout<<This->Buffer<<endl;
This=This->next;
}
cout<<This->next<<endl;
cout<<"/n/n/t/t显示了全部内容"<<endl;
system("PAUSE");
return true;
}
void main()
{
char a,cho;
bool res;
makesecorytext filesecory;
for(;;)
{
system("cls");
cout<<"/n/n/n/t/t*------------------------------------------*/n"
<<"/t/t* 欢迎进入文件加密解密处理系统 */n"
<<"/t/t*------------------------------------------*/n"
<<"/n/t/t*请选择加密还是解密:/n"
<<"/n/t/t*1:加密 2:解密"
<<"/n/n/t/t*退出请按回车键"
<<endl;
a=getch();
if(a=='1'||a=='2')
{
res=filesecory.readtext();
for(;;)
{
cout<<"/t/t是否显示文件内容(y/n)"<<endl;
cho=getch();
if(cho=='Y'||cho=='y')
{
filesecory.display();
break;
}
else if(cho=='n'||cho=='N')
break;
}
}
if(a=='1')
{
try
{
res=filesecory.secoryorbreaktext(0);
res=filesecory.savetext();
if(res==false)
throw false;
for(;;)
{
cout<<"/t/t是否显示文件内容(y/n)"<<endl;
cho=getch();
if(cho=='Y'||cho=='y')
break;
else if(cho=='n'||cho=='N')
break;
}
}
catch(bool=false)
{
cout<<"操作出错,无法继续进行!!!"<<endl;
}
}
else if(a=='2')
{
filesecory.secoryorbreaktext(1);
res=filesecory.savetext();
for(;;)
{
cout<<"/t/t是否显示文件内容(y/n)"<<endl;
cho=getch();
if(cho=='Y'||cho=='y'||cho=='n'||cho=='N')
break;
}
}
else if(a==13)
break;
else
cout<<"输入有误!!!"<<endl;
if(cho=='y'||cho=='Y')
res=filesecory.display();
}
return;
}

分享到:
评论

相关推荐

    文件加密解密.rar_C++ 文本加密_TXT加密_c++对文件加密_加密txt_文件加密解密

    文件加密的主要目标是保护数据的隐私,防止未经授权的访问。这通常通过将原始数据转换为看似随机的不可读形式(密文)来实现。当需要恢复数据时,使用相应的解密算法将密文还原为原始格式(明文)。 在这个C++实现...

    c++文本文件加密解密(报告+cpp)

    总的来说,C++文本文件加密解密是信息安全领域的一个基本技能。通过理解和实现这样的项目,开发者可以更好地理解数据安全,并具备保护数据的能力。在实际工作中,结合现代加密库(如OpenSSL)能实现更高级别的安全性...

    aes文件加密方式C++源码

    本篇文章将深入探讨AES加密算法的基本原理、C++实现以及如何应用于文件加密。 AES是由比利时密码学家Joan Daemen和Vincent Rijmen设计的,它取代了之前的DES(数据加密标准)成为新的国际标准。AES采用128位的数据...

    AES文本文件加密解密程序

    总之,“AES文本文件加密解密程序”是一个实现AES加密算法的实用工具,它可以有效地对包含中文的文本文件进行加密和解密,适用于小文件以及大文件的保护。了解和掌握这些知识点,有助于我们更好地理解和使用此类程序...

    C++文本加密程序(摩尔斯码、栅栏码等)

    本文将深入探讨一个基于C++的文本加密程序,它包含了摩尔斯码、栅栏码和逆序编码等加密方法。这些方法虽然简单,但在理解基本加密原理和实践编程技能方面具有重要意义。 首先,我们来看摩尔斯码。摩尔斯码是一种...

    C++加密解密程序

    本项目“C++加密解密程序”正是基于这样的需求,通过ASCII码实现对不同类型文件(如文档、图片、音乐、视频)的加密和解密功能。 首先,我们来理解ASCII码。ASCII(美国标准信息交换代码)是一种基于拉丁字母的一套...

    凯撒加密程序 C++编写

    生成的可执行文件`凯撒加密程序改进版.exe`意味着用户无需深入理解程序内部的C++代码,就可以直接运行该程序。用户可以通过这个可执行文件输入明文,程序将执行加密操作后输出对应的密文;或者输入密文,程序将进行...

    MFC 实现文本文件加密解密

    在这个特定的案例中,"MFC实现文本文件加密解密"是一个使用MFC框架编写的程序,它允许用户对文本文件进行加密和解密操作,确保敏感数据在传输或存储时的安全性。 在VC2010环境下,开发者通常会利用MFC的类库,如...

    文本文档加密

    在本文中,我们将深入探讨“文本文档加密”的相关知识点,以及如何对TXT文本文档进行加密和解密操作。 首先,我们要了解加密的基本原理。加密是将明文(可读数据)转化为密文(不可读数据)的过程,这个过程由一个...

    文件加密器(C++).rar

    标题中的“文件加密器(C++)”指的是一个使用C++编程语言开发的软件工具,它的主要功能是对用户指定的非文件夹类文件进行加密处理,确保数据的安全性。C++是一种强大的、面向对象的编程语言,它允许开发者创建高效且...

    开源AES文本加密程序

    2. **明文输入**:用户输入要加密的文本,这可以是纯文本文件或者直接在程序界面输入。 3. **加密操作**:程序使用选择的密钥对文本进行AES加密,生成密文。 4. **保存或传输**:加密后的数据通常以二进制格式保存,...

    visual c++ 程序开发范例宝典 随书CD 源码 加密、安全与软件注册

    数据加密技术、文本文件的加密与解密、利用图片加密文件、编程修复Access数据库、对数据库中的表锁定和解锁、改变Access 2000数据库头文件来加密数据库、利用INI文件对软件进行注册、利用注册表设计软件注册程序、...

    RSA文件加密程序的设计与实现

    本文设计的是一套完整实用的RSA文件加密解决方案,并具体编码实现。本文采用费马小定理测试素数,使用Montgomery加快大数模乘运算,用C++实现RSA加密算法类库,并在32位windows平台封装成组件。在.Net平台引用此组件...

    文件加密算法,主要用来加密文本文件,对字符串进行加密

    在给定的标题和描述中提到的“文件加密算法,主要用来加密文本文件,对字符串进行加密”,这通常涉及到对文本内容的逐字节或字符的操作。对于文本文件,我们可以使用对称加密算法,如AES(高级加密标准)、DES(数据...

    如何用c语言给一个文件加密.rar_加密_文件加密_文件加密 c++

    本篇文章将详细介绍如何利用C语言实现文件加密,并结合给出的描述和标签,我们将探讨C++中的一些相关概念。 首先,我们需要理解加密的基本原理。加密是一种将明文数据转换为看似随机的密文的过程,使得未经授权的人...

    DES加密解密算法包含txt文件加密,分组加密

    在描述中提到的C++实现的DES加密解密算法,主要是针对TXT文本文件进行操作的。TXT文件是一种常见的文本格式,通常用于存储纯文本信息。DES算法在处理这种文件时,会将文件内容视为二进制数据流,然后按照64位的块...

    rsa对称加密C++实现

    在`rsa_codec.cpp`和`rsa_codec.h`这两个文件中,可以期待看到RSA加密和解密的具体实现,包括上述提到的填充、哈希和Base64编码等功能。这些实现可能包括类定义,如`RSAEncoder`和`RSADecoder`,包含相应的成员函数...

    加密记事本_项目文件 代码 C++

    在这个项目中,C++用于编写核心逻辑和实现记事本的各种功能,如文本编辑、加密和解密算法等。 2. **配置文件(NotepadCipher.cfg)**: 这个文件通常包含应用程序的配置信息,比如默认设置、用户首选项或程序的运行...

    用C++写的加密解密

    本文将通过一个简单的C++程序来实现文本的加密与解密功能。在实际应用中,加密技术广泛应用于保护数据的安全性,尤其是在网络通信领域。对于初学者而言,理解基本的加密算法原理及其实现可以帮助更好地掌握更复杂的...

    QT C++ AES 文件加密 文本文件方式实现用户管理

    QT C++ AES 文件加密是信息安全领域的一个重要话题,特别是在用户数据管理中,为了保护用户的敏感信息,通常会采用加密技术来存储数据。AES(Advanced Encryption Standard),即高级加密标准,是一种广泛使用的对称...

Global site tag (gtag.js) - Google Analytics