| ZER DAKIDAN: Karaktereen char datu-mota ezagutzen dut eta karaktereak ASCII taularen arabera sailkatzen direla dakit. ZER IKASIKO DUDAN: char datu-motako aldagai bat teklatuz irakurri ondoren, Zesar zifratze-metodoa erabiliz karaktere zifratua nola lor daitekeen ikasiko dut. |
|
Kriptografian, Zesarren zifratze-sistema (edo Zesar zifratzea) mezuak enkriptatzeko teknikarik zaharrenetarikoa da, baita erabilienetako bat ere. Metodo honek Julio Zesar ospetsuaren ohorean dauka izena, zeinek bere jeneralekin komunikatzeko erabiltzen zuen. Ordezkatze-metodo bat da, non hasierako mezuaren letra bakoitza beste letra batengatik ordezkatzen den: Alfabetoan 3 posizio aurrerago dagoen letrarengatik. Horrela, A letra D letra bihurtuko litzateke, B-a E etab. |
Programa honek Zesar zifratzea delako enkriptazio teknika erakusten du, alfabeto larrien letra bat eman eta programak bere karaktere zifratua erakutsiko du (ASCII taulako 3 posizio aurrerago dagoena). Adibidez, A sartzean emaitza D izango da, B sartzean emaitza E izango da, X sartzean emaitza A izango da, Y sartzean emaitza B izango da eta Z sartzean emaitza C izango da:
Zesar zifratzea programaren lehen bertsioan switch agindu bat erabiltzen da datua den alfabeto larrien letra zifratzeko:
/* Ariketa-34a_ZesarZifratzeSistema: Zesarren zifratze-sistema */
// Zesar zifratze-teknikan letra bakoitzaren desplazamendua 3 da. Karaktere bat
// sartu eta switch agindu bati esker bere karaktere desplazatua lortuko da.
#include <stdio.h>
#define iDESPLAZAMENDUA 3
int main()
{
char cDatua;
char cEmaitza;
printf("\n");
do
{
printf("Zifratu nahi den karakterea sartu (A eta Z artekoa): ");
scanf("%c", &cDatua);
fflush(stdin);
} while (cDatua < 'A' || cDatua > 'Z');
switch(cDatua)
{
case 'Z': cEmaitza = 'C';
break;
case 'Y': cEmaitza = 'B';
break;
case 'X': cEmaitza = 'A';
break;
default: // sartzen da cDatua ez denean: X, Y edo Z
cEmaitza = cDatua + iDESPLAZAMENDUA;
}
printf("\t%c >>> %c\n", cDatua, cEmaitza);
return 0;
}
|
|
Alfabeto larrien letra bat zifratzeko datuari +3 egingo zaio. Alfabetoaren zerrenda zirkular bat osatuko da, zerrendaren oinarria A karakterea da eta alfabetoak 26 letra dituenez zatiketa osoaren hondarraz lortzen dira karaktereen emaitza zifratuak. |
Zesar zifratzea programaren bigarren bertsioan desplazamendua ez da balio konstantea izango. Aurreko bertsioan iDESPLAZAMENDUA balio konstantea delako posible izan da switch agindua erabili, baina desplazamendua aukeragarria denean A-Z alfabetoaren zerrenda zirkular bat osatu beharko da:
/* Ariketa-34b_ZesarZifratzeSistema: Zesarren zifratze-sistema */
// Zesar zifratze-teknikan letra bakoitzaren desplazamendua 3 da. Baina
// programa honek desplazamenduaren neurria hautatzeko aukera ematen du.
// Alfabetoaren zerrenda zirkular bat osatuz, desplazamendua finkatu eta
// datua den letra bati dagokion karaktere desplazatua lortuko da.
#include <stdio.h>
int main()
{
char cDatua;
char cEmaitza;
int iDesplazamendua;
printf("\n");
printf(" 1 2 2\n");
printf("12345678901234567890123456\n");
printf("ABCDEFGHIJKLMNOPQRSTUVWXYZ 26 karaktere\n\n");
do
{
printf("Zifratu nahi den karakterea sartu (A eta Z artekoa): ");
scanf("%c", &cDatua);
fflush(stdin);
} while (cDatua < 'A' || cDatua > 'Z');
printf("Enkriptatze-gakoa sartu (kopuru oso bat): ");
scanf("%d", &iDesplazamendua);
if (iDesplazamendua < 0) // gako negatiboa bada positibo jarri
iDesplazamendua = iDesplazamendua * (-1);
cEmaitza = (cDatua - 'A' + iDesplazamendua) % 26 + 'A';
printf("\t%c >>> %c\n", cDatua, cEmaitza);
return 0;
}
Argi dago azken programa hau aurrekoa baino ahaltsuagoa dela. Izan ere, desplazamendua beti 3 izan beharrean teklatuz irakurtzen den balio bat baita. Aurrerago erakutsiko den Ariketa 49 | Zesar zifratze-sistema artikuluan mezu osoak enkriptatzen eta desenkriptatzen ikasiko dugu.



iruzkinik ez:
Argitaratu iruzkina