📄 vigenere.cpp
字号:
#include <iostream>
#include <conio.h>
using namespace std;
class cuvinte
{
public:
unsigned int size;
int *mesaj;
cuvinte()
{
unsigned int i;
char c;
cout<<"Dati lungimea sirului "; cin>>size;
mesaj = new int[size+1];
cout<<"Tastati sirul"<<endl;
for (i=0;i<size;i++)
{
c=getch();
cout<<c;
mesaj[i]=c-97;
}
}
cuvinte(int x)
{
size = x;
mesaj = new int[size+1];
}
void afisare()
{
cout<<endl;
char c;
unsigned int i;
for (i=0;i<size;i++)
{
c=mesaj[i]+97;
cout<<c;
}
getch();
}
~cuvinte()
{
}
};
void codare_vigenere (cuvinte mesaj, cuvinte cheie)
{
cuvinte p(mesaj.size),codat(mesaj.size);
unsigned int i;
for (i=0;i<p.size;i++) p.mesaj[i]=cheie.mesaj[i%cheie.size];
for (i=0;i<=codat.size; i++)
{
codat.mesaj[i]=mesaj.mesaj[i]+p.mesaj[i];
if (codat.mesaj[i]>26) codat.mesaj[i]=codat.mesaj[i]-27;
}
codat.afisare();
}
void decodare_vigenere (cuvinte mesaj, cuvinte cheie)
{
cuvinte p(mesaj.size),decodat(mesaj.size);
unsigned int i;
for (i=0;i<p.size;i++) p.mesaj[i]=cheie.mesaj[i%cheie.size];
for (i=0;i<=decodat.size; i++)
{
decodat.mesaj[i]=mesaj.mesaj[i]-p.mesaj[i];
if (decodat.mesaj[i]<0) decodat.mesaj[i]=27+decodat.mesaj[i];
}
decodat.afisare();
}
void main()
{
cout<<"Dati mesajul"<<endl;
cuvinte mesaj;
cout<<endl;
cout<<"Dati cheia"<<endl;
cuvinte cheie;
cout<<endl;
cout<<"Tastati 1 pt codare, 2 pt decodare";
cin>>i;
if (i==1) codare_vigenere (mesaj,cheie);
if (i==2) decodare_vigenere (mesaj,cheie);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -