Vigenere加密法C++實現代碼

//Vigenere加密法
#include"DouListNode.h"
#include"DouList.h"
#include<iterator>
#include<ctime>
#include<string>
#include<list>
#include<iostream>
using namespace std;ios

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()<<"*";
 }spa

 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;
}string

參考自左飛的教材it

相關文章
相關標籤/搜索