⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 3 Examples of basic Crytprography and BruteForce approcaces
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include "utilities.h"

char bruteCaesar(char *code);
char freqAnalysis(char *code);
char * caesar(char key, char *text, int codingMode);


int main(){
char key  , *text , *c;
char file[] = {"ver.txt"};
char file2[] = {"aus.txt"};


    // Datei 謋fnen

    text = getText(file);

    printf("Eingabe: %s\n",text);

  key = bruteCaesar(text);

   c = caesar(key,text,1);

   writeText(c,file2);

   puts("Text wurde gespeichert");



   printf("Ergebnis von freqAnalysis: %c ",freqAnalysis(text));


   printf("\n\nDecode freqAnalysis: \n %s", caesar( freqAnalysis(text),text,1));

   if(c != NULL)
    {
    free (c);
    c = NULL;
    }

    return 0;
}


char bruteCaesar(char *code){
    char key = 'A', *p, c;

        while(key <= 'Z'){

        printf("\n\nFortfahren / Starten? --> 1\n\n\n\n");
        if(getchar() != '1') break;
        while( getchar() != '\n'){ }

        key++;
        p = caesar(key,code,1);

        printf("Ergebnis: %s\n",p);
        printf("Key: %c\n",key);

        free(p);

    }

return key;

}


char freqAnalysis(char *code){
    char alphabet[26];
    int i=0, max=0,maxind=0;

    for ( i = 0; i <26 ; i++) alphabet[i] = 0;

    i=0;

    while( code[i] != '\0' ){
        alphabet[( code[i] - ('A') )]++;
        i++;
    }


    for(i=0 ; i<26 ; i++){
        if (alphabet[i] > max){
            max = alphabet[i];
            maxind = i;
        }
    }


    return (((maxind + 'A'- 'E' + 26)%26)+'A');

}

char * caesar(char key, char *text, int codingMode){
    int sizeOfP = strlen(text), i = 0;
    char *c , k;

    k = key -'A';

    c = (char*) malloc(sizeof(char)*sizeOfP);
      if(c == NULL){
                printf("Zu wenig Speicherplatz!\n");
                return(1);
            }

    switch (codingMode) {
        case (0): {
                while( i < sizeOfP ){
                    c[i] = text[i]+k;
                    if (c[i] > 'Z')
                        c[i] -= 26;
                    i++;
                }

        break; // Ende Case 0 (Decode)
        }

        case (1) : {
                while( i < sizeOfP ){
                    c[i] = (text[i] - k) ;
                    if (c[i] < 'A')
                        c[i] += 26;
                    i++;
                }

            break; // Ende Case 1 (Encode)
        }

       // End Switch
    }

        c[i] = '\0';

    return c;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -