Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 1

Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 1 Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 1

www2.fh.rosenheim.de
von www2.fh.rosenheim.de Mehr von diesem Publisher
30.11.2012 Aufrufe

1-78 Aufgaben und Lösungen //------------------------------------------------------------------------ long diskReadBytes(unsigned char data[]) { FILE *f; char name[MAXLINE]; long n=0; printf("\n\nDatei von Disk lesen\nDateiname = ? "); scanf("%s",name); // Dateinamen einlesen if(!(f=fopen(name,"rb"))) { // Datei öffnen printf("\nDatei ""%s"" nicht gefunden!\n",name); return -1; } while(n=0: Anzahl der gespeicherten Elemente //------------------------------------------------------------------------ long diskWriteBytes(long n, unsigned char a[]) { FILE *f; long i; char name[MAXLINE]; printf("\n\nDatei auf Disk schreiben\nDateiname = ? "); scanf("%s",name); // Dateinamen einlesen if((f=fopen(name,"wb+"))==NULL) return -1; // Datei-Fehler for(i=0; i

Aufgaben und Lösungen 1-79 3.5 Verschlüsselung Aufgabe 3.5.1 (T1) Was unterscheidet eine Falltürfunktion von einer Einwegfunktion? Lösung Einwegfunktionen sind injektive Funktionen f:X→Y, für die y=f(x) für alle x X effizient berechenbar ist, für die aber x=f -1 (y) aus der Kenntnis von y nicht effizient (also nur mit exponentieller Komplexität) berechenbar ist. Falltürfunktionen sind spezielle Einwegfunktionen, bei denen ebenfalls y=f(x) effizient berechenbar ist, aber auch x= f -1 (y), wenn eine Zusatzinformation (ein Schlüssel) bekannt ist. Aufgabe 3.5.2 (M1) Warum ist bei der Verschlüsselung mit multiplikativen Schlüsseln bei einem Alphabet mit n=26 Zeichen der multiplikative Schlüssel k=6 nicht verwendbar? Lösung k=6 ist nicht verwendbar, da die Gleichung 6-1 6 mod 26 = 1 nicht erfüllbar ist und 6 daher keine modular Inverse hat. Die Verwendung von k=6 hätte daher zur Folge, dass die Codierung nicht eindeutig wäre. Aufgabe 3.5.3 (M2) Bob möchte Alice die Nachricht „ferien“ senden. Die beiden haben die Verwendung der 26 lateinischen Großbuchstaben vereinbart, A entspricht also 1, B entspricht 2 usw. Sie benutzen zur Verschlüsselung den multiplikativen Schlüssel 5 und den additiven Schlüssel 8. Wie lautet der Text, den Bob sendet? Für die Entschlüsselung benötigt Alice die Modular Inverse des multiplikativen Schlüssels 5. Bitte berechnen Sie diese und entschlüsseln Sie die von Alice empfangene Nachricht. Lösung Zur Verschlüsselung eines Zeichens x dient folgende Formel: y = (x k+s) mod n mit n=26 Im Folgenden werden alle Operationen modulo 26 durchgeführt. Bob rechnet also: Nachricht: f e r i e n numerische Darstellung: 6 5 18 9 5 14 Multiplikation mit k=5: 4 25 12 19 25 18 Addition von s=8: 12 7 20 1 7 26 Ergebnis: L G P A G Z Für die Entschlüsselung muss Alice rechnen: x = (y-s)k -1 Dabei ist k -1 die modular Inverse von k. Da für diese k -1 k mod 26 = 1 gelten muss, kann man k -1 aus der Gleichung k -1 =(26 i + 1)/k ermitteln, indem man die natürliche Zahl i mit 1 beginnend bis maximal 26 so lange erhöht, bis sich für k -1 schließlich eine ganzzahlige Lösung

1-78 Aufgaben und <strong>Lösungen</strong><br />

//------------------------------------------------------------------------<br />

long diskReadBytes(unsigned char data[]) {<br />

FILE *f;<br />

char name[MAXLINE];<br />

long n=0;<br />

printf("\n\nDatei von Disk lesen\nDateiname = ? ");<br />

scanf("%s",name); // Dateinamen einlesen<br />

if(!(f=fopen(name,"rb"))) { // Datei öffnen<br />

printf("\nDatei ""%s"" nicht gefunden!\n",name);<br />

return -1;<br />

}<br />

while(n=0: Anzahl der gespeicherten Elemente<br />

//------------------------------------------------------------------------<br />

long diskWriteBytes(long n, unsigned char a[]) {<br />

FILE *f;<br />

long i;<br />

char name[MAXLINE];<br />

printf("\n\nDatei auf Disk schreiben\nDateiname = ? ");<br />

scanf("%s",name); // Dateinamen einlesen<br />

if((f=fopen(name,"wb+"))==NULL) return -1; // Datei-Fehler<br />

for(i=0; i

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!