Yellow
Doppel-As
Guten abend liebe Community!
Ich beschäftige mich zur Zeit mit dem Thema Kryptographie. Nun habe ich mich mal mit der Caesar Chiffre auseinander gesetzt und versucht einen Brauchbaren Code zu generieren.
Nun zu meinem Problem:
Ich habe das gleiche Programm wie unten angegeben mit einem Cipher von meinem Namen ausprobiert. Und es konnte mit dem Algorithmus decheffriert werden. Doch wenn ich einen längeren Cipher eingebe, dann sagt der mir
"SPEICHERZUGRIFFSVERLETZUNG!"
Ich bitte euch mir da meinen Fehler zu zeige. Ich hänge da von den ganzen Tag an diesem einen Problem und wäre euch super dankbar! Ach auch wenn ihr Verbesserungsvorschläge habt bin ich gerne offen mir diese anzuhören!
Lieber grüße und danke erstmal an alle die sich damit beschäftigen
Yellow
-> -> -> ->
Ich beschäftige mich zur Zeit mit dem Thema Kryptographie. Nun habe ich mich mal mit der Caesar Chiffre auseinander gesetzt und versucht einen Brauchbaren Code zu generieren.
Nun zu meinem Problem:
Ich habe das gleiche Programm wie unten angegeben mit einem Cipher von meinem Namen ausprobiert. Und es konnte mit dem Algorithmus decheffriert werden. Doch wenn ich einen längeren Cipher eingebe, dann sagt der mir
"SPEICHERZUGRIFFSVERLETZUNG!"
Ich bitte euch mir da meinen Fehler zu zeige. Ich hänge da von den ganzen Tag an diesem einen Problem und wäre euch super dankbar! Ach auch wenn ihr Verbesserungsvorschläge habt bin ich gerne offen mir diese anzuhören!
Lieber grüße und danke erstmal an alle die sich damit beschäftigen
Yellow
PHP:
/* Ceasar du Hund :D */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* MOD ist die Anzahl der Gesamten Zeichen der Schlüsseltabelle */
#define MOD 32
const char* cipher[] = { "tqjhowtdm,uywafm_fm" };
const char* plain[] = { "t","q","j","h","o","w","t","d","m",",","u","y","w","a","f","m","_","f","m" };
int main(int argc, char **argv) {
int i,k,c=0,index[MOD];
static int x=0;
/* Initialisieren vom index */
for(i=0;i<MOD;i++)
index[i] = i;
char* matrix[] = { "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",".",",","-","_","+","#" };
/* Brutenforce des mit dem Schlüssel k */
for(k=1;k<MOD;k++) {
/* Solange durchlaufen bis alle Zeichen im Cipher durch sind */
for(x=0;x<20;x++) {
/* Ermitteln der Zahl des cipher Zeichens */
for(i=0;i<MOD;i++) {
/* cipher[x] solange mit matrix[i] vergleichen bis das Cipher Zeichen vorkommt */
if(strcmp(cipher[x],matrix[i]) == 0) {
/* Entschlüsseln des ciphers */
c = index[i] - k;
if(c<0) { /* Wenn c kleiner als 0 ist, dann muß er c + MOD nehmen. */
c += MOD;
printf("%s",matrix[c]);
}
else
{ /* Wenn c nicht gleich 0 ist, dann soll er nur matrix[mit x Zeichen] ausgeben! */
printf("%s",matrix[c]);
}
}
}
/* Ist i = MOD dann KEY mitteilen und eine neue Zeile */
if(x==19) {
printf("\tKEY: %i\n",k);
}
}
}
printf("\n"); // Abschließende weitere Zeile!
return 0;
}
-> -> -> ->