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
补充:综合编程 , 安全编程 ,