7{
8 char str[
N], strC[
N], strD[
N], c;
9 int i, a, b, ai, nc;
10 ai = -1;
11 do{
12 printf("a = ");
13 scanf("%d", &a);
16 {
17 ai = i;
18 break;
19 }
20 }while(ai<0);
21 printf("b = ");
22 scanf("%d", &b);
23 while ((c = getchar()) != '\n' && c != EOF) {}
24 i = 0;
25 do{
26 c = getchar();
27 if((c>='A'&&c<='Z')||((c>='a'&&c<='z')||c==' '))
28 {
29 str[i] = c;
30 i++;
31 }
32 }
while(c!=10&&i<(
N-1));
33 nc = i;
34 str[nc] = '\0';
35 printf("MSG: %s\n", str);
36 for(i=0; i<nc; i++)
37 {
38 if(str[i]>='A'&&str[i]<='Z')
39 strC[i] = str[i]-'A';
40 else if(str[i]>='a'&&str[i]<='z')
41 strC[i] = str[i]-'a'+26;
42 else
44 }
45 strC[nc] = '\0';
46 for(i=0; i<nc; i++)
48 strC[i] = (a*strC[i]+b)%
NC;
49 for(i=0; i<nc; i++)
50 {
52 strC[i] = strC[i]+'A';
54 strC[i] = strC[i]+'a'-26;
55 else
56 strC[i] = ' ';
57 }
58 printf("MSG ENCRIPTADO: %s\n", strC);
59 for(i=0; i<nc; i++)
60 {
61 if(strC[i]>='A'&&strC[i]<='Z')
62 strD[i] = strC[i]-'A';
63 else if(strC[i]>='a'&&strC[i]<='z')
64 strD[i] = strC[i]-'a'+26;
65 else
67 }
68 strD[nc] = '\0';
69 for(i=0; i<nc; i++)
71 {
72 if(strD[i]>=b)
73 strD[i] = (ai*(strD[i]-b))%
NC;
74 else
75 strD[i] = (ai*(
NC+strD[i]-b))%
NC;
76 }
77 for(i=0; i<nc; i++)
78 {
80 strD[i] = strD[i]+'A';
82 strD[i] = strD[i]+'a'-26;
83 else
84 strD[i] = ' ';
85 }
86 printf("MSG DESENCRIPTADO: %s\n", strD);
87 return 0;
88}