ProgIng - Programación en Ingeniería
Loading...
Searching...
No Matches
Ejemplo028.c
Go to the documentation of this file.
1
#include <stdio.h>
2
3
#define N 50
4
#define NC 52
5
6
int
main
(
int
argc,
char
*argv[])
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);
14
for
(i=0; i<
NC
; i++)
15
if
(((a*i)%
NC
)==1)
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
43
strC[i] =
NC
;
44
}
45
strC[nc] =
'\0'
;
46
for
(i=0; i<nc; i++)
47
if
(strC[i]<
NC
)
48
strC[i] = (a*strC[i]+b)%
NC
;
49
for
(i=0; i<nc; i++)
50
{
51
if
(strC[i]<
NC
/2)
52
strC[i] = strC[i]+
'A'
;
53
else
if
(strC[i]<
NC
)
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
66
strD[i] =
NC
;
67
}
68
strD[nc] =
'\0'
;
69
for
(i=0; i<nc; i++)
70
if
(strD[i]<
NC
)
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
{
79
if
(strD[i]<
NC
/2)
80
strD[i] = strD[i]+
'A'
;
81
else
if
(strD[i]<
NC
)
82
strD[i] = strD[i]+
'a'
-26;
83
else
84
strD[i] =
' '
;
85
}
86
printf(
"MSG DESENCRIPTADO: %s\n"
, strD);
87
return
0;
88
}
N
#define N
Definition
012_aleatorio.c:5
NC
#define NC
Definition
027_Paridad.c:7
main
int main(void)
Definition
Ejemplo_035.c:15
src
20252
Ejemplo028.c
Generated by
1.16.1