Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <string.h>
- #include <stdio.h>
- #define L 15
- void decrypt_text(char *encrypt, char *decrypt, char *key, char *known, int keylen);
- void print_decrypted(char *decrypt, char *key);
- int main()
- {
- puts("Enter encrypted text: ");
- char encrypt[L];
- memset(encrypt, 0, L);
- fgets(encrypt, L, stdin);
- int enclen=strlen(encrypt)-1;
- encrypt[enclen]='\0';
- char decrypt[enclen];
- memset(decrypt, 0, enclen);
- decrypt[enclen]='\0';
- char *known="flag";
- char key[6]={0};
- key[0]='a';
- int keylen=strlen(key);
- while(keylen<6)
- {
- keylen=get_next_key(key, keylen);
- decrypt_text(encrypt, decrypt, key, known, keylen);
- if(strstr(decrypt, known)!=NULL)
- {
- print_decrypted(decrypt,key);
- }
- }
- int get_next_key(char* key, int keylen)
- {
- for(int i=0; i<keylen; i++)
- {
- if(key[i]!='z')
- {
- key[i]++;
- return keylen;
- }
- key[i]='a';
- }
- key[keylen]='a';
- return keylen+1;
- }
- void decrypt_text(char *encrypt, char *decrypt, char *key, char *known, int keylen)
- {
- int len=strlen(encrypt);
- int letter=0;
- for(int q=0; q<len; q++)
- {
- letter=(q%keylen);
- decrypt[q]=(((encrypt[q]+26-key[letter])%26)+'a');
- }
- }
- void print_decrypted(char *decrypt, char *key)
- {
- printf("Decrypted text: %s ",decrypt);
- printf("Key: %s\n",key);
- }
- ////////////////////////////////////////////////////////////////
- #include <stdlib.h>
- #include <string.h>
- #include <stdio.h>
- #include <ctype.h>
- #define L 30
- int error_search(char str[L], int sys);
- int max_dec(char str[L], int sys);
- int power_system(int sys, int power);
- int main()
- {
- puts("Enter non-negative integers (space between; point at the end): ");
- char str[L];
- memset(str, 0, L);
- fgets(str, L, stdin);
- int sys;
- puts("Enter the number system:");
- scanf("%d/n", &sys);
- if(error_search(str, sys) == 1) // поиск ошибок во вводе и несоответ. СС
- {
- puts("YOU IDIOT!!!!!!");
- return 1;
- }
- int max=max_dec(str, sys); //поиск и перевод в десятичную СС макс.ч.
- printf("Max number in decimal:\n%d ", max);
- return 0;
- }
- int error_search(char str[L], int sys) //проверяем:
- {
- int len=strlen(str); //последний - точка
- int digit=0; //все цифры соответствуют СС
- if (str[len-2]!='.')
- {
- return 1;
- }
- if(!isalnum(str[0]))
- {
- return 1;
- }
- for(int i=0; i<(len-2); i++) //все символы в строке - пробелы и цифры
- {
- if(!isalnum(str[i]) && str[i]!=' ')
- {
- return 1;
- }
- digit=str[i];
- if(isdigit(str[i])) //если символ цифра
- {
- digit=digit-'0';
- }
- else //если символ буква
- {
- digit=digit-'7';
- }
- if(digit>=sys)
- {
- return 1;
- }
- }
- }
- int max_dec(char str[L], int sys)
- {
- int i=0, k=0;
- int ascii=0, number=0, max=0;
- while((str[i]!='.') & (str[i]!='\n')) //проверяем,не кончилась ли строка
- {
- int j=i;
- while((str[i]!=' ') & (str[i]!='.')) //считаем кол-во цифр в числе
- {
- k++;
- i++;
- }
- int power=k-1; //величина для возведения основания СС в степень
- while((str[j]!=' ') & (str[j]!='.')) //переводим в 10 СС:
- {
- ascii=str[j];
- if(str[j]>='0' && str[j]<='9') //если символ цифра
- {
- number+=(ascii-'0')*(power_system(sys,power));
- }
- else
- {
- number+=(ascii-'7')*(power_system(sys,power)); //если буква
- }
- power--;
- j++;
- }
- if(number>max) //если число наибольшее - запоминаем
- {
- max=number;
- number=0;
- }
- i++;
- k=0;
- }
- return max;
- }
- int power_system(int sys, int power) //возведеие СС в степень
- {
- int result=1;
- if(power!=0)
- {
- for(; power>0; power--)
- {
- result*=sys;
- }
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement