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

📄 置换加密算法.cpp

📁 本例是一个完整的加密解密算法的c++源程序。
💻 CPP
字号:
// 置换加密算法.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"

#include<iostream.h>
#include<stdlib.h>
#include<string.h>
#include<fstream.h>
#include<ctype.h>
#define size 256//密码本中包涵的元素个数
struct dict{
  char source;//密码本文件源码字符(上行)
  char secret;//密码本文件密码字符(下行)
        }dia1;
char diction1[size], diction2[size];//用于存放密码本的两个数组
char ch;//当前要加密的字符
int j;//临时变量
char filename[20];//存放等待加密的外部文件名
void readdictionary()   { //读密码本模块
   cout<<"请将含密码本的U盘插人驱动器中,按回车键继续"<<endl;
   cin.get();//起暂停作用,按键继续
   ifstream dictionf("F:\\dictionary.dat",ios::in|ios::nocreate);
    //打开密码本文件用于输人
   dictionf.seekg(0);
   dict dict2;
   int m=sizeof(dict2);
   int j=0;
   while(dictionf.read((char * )&dict2,m))
   {  j=j+1;
      diction1[j]=dict2.source;//数组diction1存密码本的源码字符
      diction2[j]=dict2.secret;//数组diction2存密码本的密码字符
   };
   dictionf.close();
   cout<<"读取密码本完成,请将U盘取出妥为保管,按回车键继续!"<<endl;   
   cin.get();
};
void encryption(char a1[size],char a2[size])//加密模块
{  ifstream f1("F:\\123.dat");//打开要加密的文件,用于输人
   if(f1.fail()){
      cerr<<"要加密的文件不存在"<<endl;
      exit(1);
   }
   ofstream f2("F:\\temp.dat");//打开存放结果的文件,用于输入
   if(f2.fail()){
       cerr<<"存放结果的文件不存在"<<endl;
       exit(1);
   }
   ch=f1.get();
   int j;
   while (ch!=EOF)
   {  j=1;
      while(ch!=a1[j])j=j+1;//要加密的字符与密码本源码匹配
      ch=a2[j];//如匹配,换码,将明文换成密文
      f2.put(ch);
   ch=f1.get();//取下一个字符
   };
   cout<<"文件加密成功,按回车确定"<<endl;
   cin.get();
};
void decryption(char a1[size],char a2[size])//解密模块
{  ifstream f1("F:\\temp.dat");//打开要解密的文件,用于输人
  if (f1.fail()){
        cerr<<"要解密的文件不存在"<<endl;
        exit(1);
  }
  ofstream f2("F:\\123.dat");//打开存放结果的文件,用于输出
  if (f2.fail()){
        cerr<<"存放结果的文件不存在"<<endl;
        exit(1);
  }
  ch=f1.get();
  int j;
  while (ch!=EOF)
  {  j=1;
      while (ch!=a1[j]) j=j+1;//要解密的字符与密码本密码字符匹配
      ch=a2[j];//如匹配,换码,将密文换成明文
      f2.put(ch);
  ch=f1.get();
  };
  cout<<"文件解密成功,按回车确定"<<endl;
  cin.get();
};
void mimazidian()
{  fstream fout("F:\\dictionary.dat",ios::out|ios::trunc|ios::binary); 
    if(! fout){
      cerr<<"文件mimaben.dat不存在!"<<endl;
        exit(1);
    }
    dict x;
    cout<<"请输入明文字符与密文字符的对应表形成密码本文件,按Ctrl+z键结束:"<<endl;
    while (cin>>x.source){
           cin>>x.secret;
           fout.write((char * )&x,sizeof(x));
    }
    fout.close();
    cout <<"输人结束并已在F盘形成密码本文件." << endl;
};
void main(){//主程序模块
    readdictionary();//调用读密码本文件模块
    cout<<"请按下列菜单选择功能:"<<endl;
    cout<<"1--加密   2--解密  3--建立密码本  0--退出"<<endl;
    cout<<"请选择(0----3):";
    int i;
    cin>>i;
    switch(i){
    case 1:
        encryption(diction1,diction2);//加密
        break;
    case 2:
        decryption(diction2,diction1);//解密
        break;
    case 3:
        mimazidian ( ) ; //生成密码本文件
        break;
    case 0:
        return;
    }
}

⌨️ 快捷键说明

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