Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 1
Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 1 Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 1
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
- Seite 27 und 28: Aufgaben und Lösungen 1-27 Aufgabe
- Seite 29 und 30: Aufgaben und Lösungen 1-29 Bei Ver
- Seite 31 und 32: Aufgaben und Lösungen 1-31 Aufgabe
- Seite 33 und 34: Aufgaben und Lösungen 1-33 Aufgabe
- Seite 35 und 36: Aufgaben und Lösungen 1-35 Lösung
- Seite 37 und 38: Aufgaben und Lösungen 1-37 Fragen
- Seite 39 und 40: Aufgaben und Lösungen 1-39 } if(h[
- Seite 41 und 42: Aufgaben und Lösungen 1-41 3 Codie
- Seite 43 und 44: Aufgaben und Lösungen 1-43 3.2 Cod
- Seite 45 und 46: Aufgaben und Lösungen 1-45 x i w i
- Seite 47 und 48: Aufgaben und Lösungen 1-47 Aufgabe
- Seite 49 und 50: Aufgaben und Lösungen 1-49 Aufgabe
- Seite 51 und 52: Aufgaben und Lösungen 1-51 Modifik
- Seite 53 und 54: Aufgaben und Lösungen 1-53 Auftrit
- Seite 55 und 56: Aufgaben und Lösungen 1-55 Dieses
- Seite 57 und 58: Aufgaben und Lösungen 1-57 N 2/21
- Seite 59 und 60: Aufgaben und Lösungen 1-59 Der Cod
- Seite 61 und 62: Aufgaben und Lösungen 1-61 Aufgabe
- Seite 63 und 64: Aufgaben und Lösungen 1-63 2 2 8 2
- Seite 65 und 66: Aufgaben und Lösungen 1-65 //*****
- Seite 67 und 68: Aufgaben und Lösungen 1-67 } d=x[i
- Seite 69 und 70: Aufgaben und Lösungen 1-69 return
- Seite 71 und 72: Aufgaben und Lösungen 1-71 printf(
- Seite 73 und 74: Aufgaben und Lösungen 1-73 else pr
- Seite 75 und 76: Aufgaben und Lösungen 1-75 } print
- Seite 77: Aufgaben und Lösungen 1-77 } free(
- Seite 81 und 82: Aufgaben und Lösungen 1-81 Einsetz
- Seite 83 und 84: Aufgaben und Lösungen 1-83 Lösung
- Seite 85 und 86: Aufgaben und Lösungen 1-85 Axiom 1
- Seite 87 und 88: Aufgaben und Lösungen 1-87 Aufgabe
- Seite 89 und 90: Aufgaben und Lösungen 1-89 Aufgabe
- Seite 91 und 92: Aufgaben und Lösungen 1-91 Aufgabe
- Seite 93 und 94: Aufgaben und Lösungen 1-93 Lösung
- Seite 95: Aufgaben und Lösungen 1-95 C7 SUB
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