Add files via upload
This commit is contained in:
154
Polybios.cpp
Normal file
154
Polybios.cpp
Normal file
@@ -0,0 +1,154 @@
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
#include <cmath>
|
||||
|
||||
using namespace std;
|
||||
|
||||
char matrix[5][5]={
|
||||
{0,0,0,0,0},
|
||||
{0,0,0,0,0},
|
||||
{0,0,0,0,0},
|
||||
{0,0,0,0,0},
|
||||
{0,0,0,0,0}
|
||||
};
|
||||
string schluessel;
|
||||
string alphabet = "abcdefghiklmnopqrstuvwxyz";
|
||||
string klartext;
|
||||
string chiffretext;
|
||||
|
||||
void schluesseleingabe();
|
||||
void alphabeterstellung();
|
||||
void matrixerstellung();
|
||||
void auswahl();
|
||||
void verschluesseln();
|
||||
void entschluesseln();
|
||||
|
||||
int main() {
|
||||
schluesseleingabe();
|
||||
alphabeterstellung();
|
||||
matrixerstellung();
|
||||
auswahl();
|
||||
}
|
||||
|
||||
void schluesseleingabe(){
|
||||
cout << "Geben Sie den Schluessel ein: ";
|
||||
cin >> schluessel;
|
||||
string schluesselneu;
|
||||
string schluesselalt = schluessel;
|
||||
bool isschluesselneu = 0;
|
||||
int i=0;
|
||||
for (int y = 0; y<=schluessel.length(); y++){
|
||||
for (int x= 0; x<=schluessel.length(); x++){
|
||||
if (y!=x&&x>y){
|
||||
if (schluessel[y]==schluessel[x]){
|
||||
isschluesselneu = 1;
|
||||
schluessel.erase(y,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int y=0; y<=schluessel.length();y++){
|
||||
|
||||
if (schluessel[y]!='j'){
|
||||
schluesselneu = schluesselneu + schluessel[y];
|
||||
}
|
||||
else {
|
||||
schluesselneu = schluesselneu + 'i';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
schluessel = schluesselneu;
|
||||
if (isschluesselneu==1){
|
||||
cout << "Schluessel \"" << schluesselalt << "\" war ungueltig und wurde zu \""<< schluessel << "\" gekürtzt.\n";
|
||||
}
|
||||
}
|
||||
|
||||
void alphabeterstellung(){
|
||||
int y = 0;
|
||||
int condition = 25 - schluessel.length();
|
||||
while (alphabet.length()+schluessel.length()-1!=25){
|
||||
for (int x = 0; x<= schluessel.length(); x++){
|
||||
if (alphabet[y]==schluessel[x]) {
|
||||
alphabet.erase(y,1);
|
||||
}
|
||||
}
|
||||
y++;
|
||||
if (y>alphabet.length()){
|
||||
y=0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void matrixerstellung(){
|
||||
cout <<"\n";
|
||||
int k = 0;
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
int l = 0;
|
||||
for (i = 0; i<5;i++){
|
||||
for (j = 0; j<5; j++){
|
||||
if (k>=schluessel.length()-1){
|
||||
matrix[i][j] = alphabet[l];
|
||||
l++;
|
||||
}
|
||||
else {
|
||||
matrix[i][j] = schluessel[k];
|
||||
k++;
|
||||
}
|
||||
|
||||
}
|
||||
cout << "\n";
|
||||
}
|
||||
cout <<"\n\n Ihre matrix sieht jetzt so aus: \n";
|
||||
for (int y = 0; y<5;y++){
|
||||
for (int x = 0; x<5; x++){
|
||||
cout << matrix[y][x] << " ";
|
||||
}
|
||||
cout << "\n";
|
||||
}
|
||||
cout <<"\n";
|
||||
}
|
||||
|
||||
void auswahl(){
|
||||
int auswahl;
|
||||
cout << "Wollen Sie ver-(1) oder entschluesseln(2)? ";
|
||||
cin >> auswahl;
|
||||
switch (auswahl){
|
||||
case 1:
|
||||
verschluesseln();
|
||||
break;
|
||||
case 2:
|
||||
entschluesseln();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void verschluesseln(){
|
||||
cout << "Geben Sie den zu Verschlüsselnden Text ein: ";
|
||||
cin >> klartext;
|
||||
for (int z = 0; z<klartext.length();z++){
|
||||
for (int y = 0; y<5;y++){
|
||||
for (int x = 0; x<5; x++){
|
||||
if (matrix[y][x]==klartext[z]){
|
||||
chiffretext = chiffretext + to_string(y);
|
||||
chiffretext = chiffretext + to_string(x);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
cout << "Der Chiffretext lautet: " << chiffretext<< "\n";
|
||||
}
|
||||
|
||||
void entschluesseln(){
|
||||
cout << "Geben Sie den zu Entschluesselnden Text ein: ";
|
||||
cin >> chiffretext;
|
||||
int i = 0;
|
||||
while (i< chiffretext.length()){
|
||||
klartext = klartext + matrix[(int)chiffretext[i]-48][(int)chiffretext[i+1]-48];
|
||||
i+=2;
|
||||
}
|
||||
cout << "Der Klartext lautet: " << klartext<< "\n";
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user