Advertisement
Guest User

Untitled

a guest
Jan 25th, 2020
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.61 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <string.h>
  3. #include <stdio.h>
  4. #define L 15
  5.  
  6. void decrypt_text(char *encrypt, char *decrypt, char *key, char *known, int keylen);
  7. void print_decrypted(char *decrypt, char *key);
  8.  
  9. int main()
  10. {
  11. puts("Enter encrypted text: ");
  12. char encrypt[L];
  13. memset(encrypt, 0, L);
  14. fgets(encrypt, L, stdin);
  15. int enclen=strlen(encrypt)-1;
  16. encrypt[enclen]='\0';
  17.  
  18. char decrypt[enclen];
  19. memset(decrypt, 0, enclen);
  20. decrypt[enclen]='\0';
  21. char *known="flag";
  22. char key[6]={0};
  23. key[0]='a';
  24.  
  25. int keylen=strlen(key);
  26. while(keylen<6)
  27. {
  28. keylen=get_next_key(key, keylen);
  29. decrypt_text(encrypt, decrypt, key, known, keylen);
  30. if(strstr(decrypt, known)!=NULL)
  31. {
  32. print_decrypted(decrypt,key);
  33. }
  34. }
  35.  
  36. int get_next_key(char* key, int keylen)
  37. {
  38. for(int i=0; i<keylen; i++)
  39. {
  40. if(key[i]!='z')
  41. {
  42. key[i]++;
  43. return keylen;
  44. }
  45. key[i]='a';
  46. }
  47. key[keylen]='a';
  48. return keylen+1;
  49. }
  50.  
  51. void decrypt_text(char *encrypt, char *decrypt, char *key, char *known, int keylen)
  52. {
  53. int len=strlen(encrypt);
  54. int letter=0;
  55. for(int q=0; q<len; q++)
  56. {
  57. letter=(q%keylen);
  58. decrypt[q]=(((encrypt[q]+26-key[letter])%26)+'a');
  59. }
  60. }
  61. void print_decrypted(char *decrypt, char *key)
  62. {
  63. printf("Decrypted text: %s ",decrypt);
  64. printf("Key: %s\n",key);
  65. }
  66.  
  67. ////////////////////////////////////////////////////////////////
  68.  
  69. #include <stdlib.h>
  70. #include <string.h>
  71. #include <stdio.h>
  72. #include <ctype.h>
  73. #define L 30
  74.  
  75.  
  76. int error_search(char str[L], int sys);
  77. int max_dec(char str[L], int sys);
  78. int power_system(int sys, int power);
  79.  
  80.  
  81. int main()
  82. {
  83. puts("Enter non-negative integers (space between; point at the end): ");
  84. char str[L];
  85. memset(str, 0, L);
  86. fgets(str, L, stdin);
  87.  
  88. int sys;
  89. puts("Enter the number system:");
  90. scanf("%d/n", &sys);
  91.  
  92. if(error_search(str, sys) == 1) // поиск ошибок во вводе и несоответ. СС
  93. {
  94. puts("YOU IDIOT!!!!!!");
  95. return 1;
  96. }
  97.  
  98. int max=max_dec(str, sys); //поиск и перевод в десятичную СС макс.ч.
  99. printf("Max number in decimal:\n%d ", max);
  100. return 0;
  101. }
  102.  
  103.  
  104. int error_search(char str[L], int sys) //проверяем:
  105. {
  106. int len=strlen(str); //последний - точка
  107. int digit=0; //все цифры соответствуют СС
  108.  
  109. if (str[len-2]!='.')
  110. {
  111. return 1;
  112. }
  113.  
  114. if(!isalnum(str[0]))
  115. {
  116. return 1;
  117. }
  118.  
  119. for(int i=0; i<(len-2); i++) //все символы в строке - пробелы и цифры
  120. {
  121. if(!isalnum(str[i]) && str[i]!=' ')
  122. {
  123. return 1;
  124. }
  125.  
  126. digit=str[i];
  127. if(isdigit(str[i])) //если символ цифра
  128. {
  129. digit=digit-'0';
  130. }
  131. else //если символ буква
  132. {
  133. digit=digit-'7';
  134. }
  135. if(digit>=sys)
  136. {
  137. return 1;
  138. }
  139. }
  140. }
  141.  
  142. int max_dec(char str[L], int sys)
  143. {
  144. int i=0, k=0;
  145. int ascii=0, number=0, max=0;
  146. while((str[i]!='.') & (str[i]!='\n')) //проверяем,не кончилась ли строка
  147. {
  148. int j=i;
  149. while((str[i]!=' ') & (str[i]!='.')) //считаем кол-во цифр в числе
  150. {
  151. k++;
  152. i++;
  153. }
  154.  
  155. int power=k-1; //величина для возведения основания СС в степень
  156. while((str[j]!=' ') & (str[j]!='.')) //переводим в 10 СС:
  157. {
  158. ascii=str[j];
  159. if(str[j]>='0' && str[j]<='9') //если символ цифра
  160. {
  161. number+=(ascii-'0')*(power_system(sys,power));
  162. }
  163. else
  164. {
  165. number+=(ascii-'7')*(power_system(sys,power)); //если буква
  166. }
  167.  
  168. power--;
  169. j++;
  170. }
  171.  
  172. if(number>max) //если число наибольшее - запоминаем
  173. {
  174. max=number;
  175. number=0;
  176. }
  177.  
  178. i++;
  179. k=0;
  180. }
  181. return max;
  182. }
  183.  
  184. int power_system(int sys, int power) //возведеие СС в степень
  185. {
  186. int result=1;
  187. if(power!=0)
  188. {
  189. for(; power>0; power--)
  190. {
  191. result*=sys;
  192. }
  193. }
  194. return result;
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement