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