当前位置:编程学习 > 网站相关 >>

Vigenere加密法C++实现代码

//Vigenere加密法
#include"DouListNode.h"
#include"DouList.h"
#include<iterator>
#include<ctime>
#include<string>
#include<list>
#include<iostream>
using namespace std;
 
int main()
{
 srand((unsigned)time(NULL));
 DouList<char> planText;
 DouList<char>cryptograph;
 DouList<int> key;
 DouList<char>trans;
 planText.SetBegin();
 planText.AddTail('Y');
 planText.AddTail('o');
 planText.AddTail('u');
 planText.AddTail('a');
 planText.AddTail('r');
 planText.AddTail('e');
 planText.AddTail('i');
 planText.AddTail('n');
 planText.AddTail('d');
 planText.AddTail('a');
 planText.AddTail('n');
 planText.AddTail('g');
 planText.AddTail('e');
 planText.AddTail('r');
 planText.AddTail('!');
 planText.SetBegin();
 //
 cout<<"明文:"<<endl;
 for(int i=0;i<planText.GetCount();i++)
 {
  cout<<planText.GetNext()<<"*";
 }
 cout<<endl;
 
 for(int i=0;i<6;i++)
 {
  key.AddTail(rand()%50);
 }
 cout<<"密钥:"<<endl;
 for(int i=0;i<key.GetCount();i++)
 {
  cout<<key.GetNext()<<"*";
 }
 
 cout<<endl;
 planText.SetBegin();
 key.SetBegin();
 cryptograph.SetBegin();
 for(int i=0;i<planText.GetCount();i++)
 {
  cryptograph.AddHead(key.GetNext()+planText.GetNext());
 }
 cryptograph.SetBegin();
 cout<<"密文:"<<endl;
 for(int k=0;k<cryptograph.GetCount();k++)
 {
  cout<<cryptograph.GetNext();
 }
 cout<<endl;
 trans.SetBegin();
 key.SetBegin();
 planText.SetBegin();
 for(int i=0;i<planText.GetCount();i++)
 {
  trans.AddHead(cryptograph.GetPrior()-key.GetNext());
 }
 trans.SetBegin();
 cout<<"解密后:"<<endl;
 for(int k=0;k<trans.GetCount();k++)
 {
  cout<<trans.GetPrior();
 }
 cout<<endl;
 system("pause");
 return 0;
}
 
参考自左飞的教材

作者 jessier
补充:综合编程 , 安全编程 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,