5 Codierung nach RSA (Lösung)

Größe: px
Ab Seite anzeigen:

Download "5 Codierung nach RSA (Lösung)"

Transkript

1 Kapitel 5 Codierung nach RSA (Lösung) Seite 1/17 5 Codierung nach RSA (Lösung) 5.1 Einführung Die drei Mathematiker Rivest, Shamir und Adleman entwickelten 1977 das nach ihnen benannte RSA-Verfahren. Es basiert auf der Idee, dass die Faktorisierung einer großen Zahl, also ihre Zerlegung in (mindestens zwei) Faktoren, eine sehr aufwändige Angelegenheit ist, während das Erzeugen einer Zahl durch Multiplikation zweier Primzahlen trivial ist. Abbildung 5.1: Ronald Rivest (in der Mitte), Adi Shamir (links) und Leonard Adleman (rechts), Ich will nun das RSA-Verfahren an einem Beispiel verdeutlichen. An Alice sollen verschlüsselte Botschaften versendet werden. Dazu stellt Alice einen öffentlich bekannten Schlüssel (public key) zur Verfügung. Jeder kann diesen Schlüssel verwenden, um seine Botschaften an Alice zu kodieren. Bob verwendet nun diesen Schlüssel, um eine verschlüsselte Nachricht an Alice zu senden. Nach der Verschlüsselung ist es nur noch Alice möglich, diese Nachricht zu dekodieren, da nur sie die "Zusammensetzung" (private key) des von ihr erzeugten (öffentlichen) Schlüssels kennt. Bemerkung: Zuerst müssen die Buchstaben in Zahlen verwandelt werden. Dazu eignet sich natürlich der ASCII-Code. Dadurch entstehen bei den Großbuchstaben Zahlen zwischen 65 und 90. Um nun ein Beispiel mit Hilfe des Taschenrechners durchzuspielen, benötige ich möglichst kleine Zahlen. Beim RSA-Verfahren

2 Kapitel 5 Codierung nach RSA (Lösung) Seite 2/17 müssen nämlich zwei Primzahlen gewählt werden, deren Produkt größer ist als die größte Zahl, die die Buchstaben darstellen. Deshalb nummeriere ich die Buchstaben von 1 bis 26 (ASCII 65). Somit können im folgenden Beispiel kleinere Primzahlen gewählt werden Öffentlicher Schlüssel (public key) Alice muss also zuerst einen öffentlichen Schlüssel erzeugen. Sie wählt zwei riesige Primzahlen p und q. Die Primzahlen sollten sehr groß sein, doch der Einfachheit halber nehmen wir an, das Alice p = 5 und q = 11 wählt. Diese Zahlen muss sie geheim halten. Alice multipliziert diese beiden Primzahlen miteinander und erhält die Zahl N, in diesem Fall ist N = 55. Nun errechnet Alice eine Hilfszahl Z = (p-1). (q-1) = (5 1). (11 1) = 40. Sie wählt jetzt eine weitere Zahl E, die prim ist und zugleich kein Teiler von dieser Hilfszahl Z ist, in diesem Fall z.b. E = 7. Jetzt kann Alice diese beiden Zahlen E und N in einem öffentlichen Verzeichnis ablegen, so dass jeder Zugang zu diesen beiden Zahlen hat. Diese stellen also den öffentlichen Schlüssel (public key) dar, also N = 55 und E = Verschlüsselung Bob will nun Alice eine Mitteilung machen. Er muss also die Buchstaben des Klartextes zuerst in Zahlen umwandeln. Dazu nummeriert er das Alphabet durch: A = 0, B = 1, C = 2,, Z = 25. Nun sucht er den öffentlichen Schlüssel von Alice heraus, also N = 55 und E = 7. Damit kann er jeden Klarbuchstaben K in den Geheimbuchstaben G umrechnen nach folgender Formel G = K E mod N [K = Klarbuchstabe, G = Geheimbuchstabe] Nehmen wir nun an, Bob will an Alice den Klarbuchstaben M verschlüsselt senden. M = 12 G = 12 7 mod 55 = mod 55

3 Kapitel 5 Codierung nach RSA (Lösung) Seite 3/17 Bei großen Primzahlen wird diese Berechnung schwierig werden. Hierzu kann deshalb die Kongruenzarithmetik verwendet werden, indem 12 7 (bezüglich des Modulus 55) schrittweise durch eine dazu kongruente kleinere Zahl ersetzt wird. G = [12 mod ] mod mod 55. G = 23 Aus dem Klartext K = 12 (entspricht dem Buchstaben M ) ist somit der Geheimtext G = 23 geworden. Jetzt schickt Bob den Geheimtext 23 an Alice Geheimer Schlüssel (private key) Da die Modul-Arithmetik eine Einwegfunktion ist, ist es sehr schwer, bei sehr großen Zahlen sogar unmöglich, von G = 23 den Weg zurückzugehen und auf die ursprünglich Botschaft zu schließen. Alice jedoch kann die Botschaft entschlüsseln, weil nur sie eine bestimmte Information hat, nämlich die beiden Primzahlen p und q. Daraus berechnet sie eine besondere Zahl D, den privaten Schlüssel (private key). Diese Zahl D wird nach folgender Formel berechnet: E. D = 1 mod ((p-1). (q-1)) also E. D = 1 mod 40 = 1, 41, , 161, 201, 241, 281, 321, 361, 401, 441, Aus all diesen Zahlen sucht man nun eine, die E (hier 7) als Teiler haben, z.b. D = 161 : 7 = 23 D = 441 : 7 = 63 oder auch Somit besitzt nun Alice den geheimen Schlüssel (private key), also N = 55 und D = Entschlüsselung Um die Mitteilung von Bob nun zu entschlüsseln, benutzt Alice einfach folgende Formel: K = G D mod N [K = Klarbuchstabe, G = Geheimbuchstabe]

4 Kapitel 5 Codierung nach RSA (Lösung) Seite 4/17 K = (mod 55) = [23 mod 55). 23]. mod mod 55 = 12 also K = 12 = M. Alice kann also die von Bob verschlüsselte Nachricht lesen. Ein weiteres Beispiel zum Probieren: H = = 7 G = 7 7 (mod 55) = 28 K = (mod 55) = 7 = H Verwende nun folgenden Schlüssel: p = 47 N = 2773 D = 157 q = 59 E = 17 Auf den folgenden Webseiten findest du weitere Informationen über das RSA- Verfahren:

5 Kapitel 5 Codierung nach RSA (Lösung) Seite 5/ Definieren der Schnittstelle Abbildung 5.2: Definieren einer grafischen Schnittstelle Die Abbildung 5.2 zeigt, wie unsere grafische Benutzeroberfläche gestaltet sein könnte. Unabhängig vom Aussehen der GUI benötigen wir zur Codierung eines Textes die beiden Schlüssel N und E und das Klarwort. Diese drei Daten sollen vom Benutzer in entsprechenden Textfelder eingeben werden. Die Klasse RSA ist also verantwortlich, dass sie sich diese Daten aus der GUI selber holt. Dafür wird eine Methode holedaten() implementiert, die diese Aufgabe zu erledigen hat. Die Klasse RSA codiert nun mit Hilfe der beiden Schlüssel das eingegebene Das entsprechende Geheimwort gibt die Klasse RSA mit Hilfe der Methode gibwort() wieder zurück. Somit hat die Klasse Ansicht das Geheimwort und kann dann es in das dafür vorgesehene Textfeld einlesen. Die Klasse RSA hat also die folgenden öffentlichen Methoden: holedaten() und gibwort(). Nur diese beiden Methoden können von der Klasse Ansicht gesehen und somit auch verwendet werden.

6 Kapitel 5 Codierung nach RSA (Lösung) Seite 6/ Die Klasse RSA Verschlüsselung Wie in Abbildung 5.2 angedeutet, benötigt die Klasse RSA das Klarwort und die beiden Schlüssel und ermittelt daraus das Geheimwort. Allerdings können wir Klarwort und Geheimwort in einem einzigen Datenfeld speichern. Somit besitzt die Klasse RSA die drei Datenfelder wort, nschl und eschl. wort nsschl eschl RSA Methoden Abbildung 5.3: Datenfelder der Klasse RSA Diese drei Datenfelder müssen nun mit entsprechenden Werten belegt werden. Diese Werte holt sich die Klasse RSA mit Hilfe der Methode holedaten() aus den Textfeldern der GUI. In der Methode codierewort() wird aus dem Klartext der Geheimtext berechnet. Mit Hilfe der Methode gibwort() gibt die Klasse RSA nun den Geheimtext wieder zurück an die Klasse Ansicht, die ihn in das entsprechende Textfeld einsetzt. wort nschl eschl RSA holedaten() codierewort() rechnerest() gibwort() Abbildung 5.4: Datenfelder und Methoden der Klasse RSA Die Methode codierewort() ähnelt der Methode aus den bisher besprochenen Kapiteln.

7 Kapitel 5 Codierung nach RSA (Lösung) Seite 7/17 private void codierewort() StringBuffer wortbuffer; int wortlaenge, x; char ch; wortbuffer = new StringBuffer(); wort = wort.touppercase(); wortlaenge = wort.length(); for (int i = 0; i < wortlaenge; i++) ch = wort.charat(i); x = (int) ch; x = x - 65; x = rechnerest(x); wortbuffer.append(x + " "); wort = wortbuffer.tostring(); Abbildung 5.5: Die Methode codierewort() Neu hingegen ist die Methode rechnerest(). Jedem Buchstaben wird eine Zahl zugeordnet. Hier habe ich vorerst die Nummerierung im Alphabet genommen, also A = 0, B = 1,, Z = 25, weil mit diesen kleinen Zahlen relativ leicht zu rechnen ist. Diese zu verschlüsselnde Zahl, die Klarzahl, wird mit dem Schlüssel E potenziert und der Rest bezüglich der Division durch den Schlüssel N berechnet: G = K E mod N [K = Klarbuchstabe, G = Geheimbuchstabe] Dieser Rest ist die verschlüsselte Zahl. Die Methode rechnerest() ermittelt den Rest, indem man die Klarzahl modulo N berechnet. Dieser Rest wird wieder mit der Klarzahl multipliziert, der Rest modulo N ermittelt, und so weiter. Die Anzahl der Durchläufe wird durch den Schlüssel E bestimmt: G = [x mod N. x] mod N. x mod N. for (int i = 0; i < eschl; i++) rest = zahl % nschl; zahl = rest * zahlh; Abbildung 5.6: Die Kongruenz-Arithmetik

8 Kapitel 5 Codierung nach RSA (Lösung) Seite 8/17 Mit Hilfe dieser Kongruenz-Arithmetik wird also aus der Klarzahl zahl die Geheimzahl rest ermittelt. private int rechnerest(int zahlh) int zahl, rest = 0; zahl = zahlh; for (int i = 0; i < eschl; i++) rest = zahl % nschl; zahl = rest * zahlh; return rest; Abbildung 5.7: Die Methode rechnerest() Übung: Das Projekt RSA01a behandelt die Verschlüsselung nach RSA. Abbildung 5.8: Die Methoden holedaten() und gibwort() Entschlüsselung In der Methode codierewort() wurden die Klarbuchstaben in Geheimzahlen umgerechnet und jeweils mit einem Zwischenabstand in das Textfeld geschrieben. Auch nach der letzten Geheimzahl befindet sich ein Leerzeichen. Bemerkung: Es ist wichtig, dass die Eingabe der Zahlenreihe mit einem Leerzeichen abgeschlossen wird, denn dieses Leerzeichen wird hier zur Trennung dieser Zahlenreihe benötigt. Zum Dekodieren benötigen wir nun den Schlüssel D. Folglich verwenden wir ein Datenfeld dschl. Die öffentlichen Methoden holewort() und gibwort() bleiben unverändert und können somit von der Klasse Ansicht gelesen werden.

9 Kapitel 5 Codierung nach RSA (Lösung) Seite 9/17 Änderungen finden in den beiden privaten Methoden decodierewort() und rechnerest(). wort nschl dschl RSA holedaten() decodierewort() rechnerest() gibwort() Abbildung 5.9: Datenfelder und Methoden der Klasse RSA Die Methode decodierwort() muss nun aus der Zahlenreihe wieder das Klarwort ermitteln. private void decodierewort() StringBuffer wortbuffer; String teilwort; int trennen, x; wortbuffer = new StringBuffer(); while (wort.length() > 0) trennen = wort.indexof(32); teilwort = wort.substring(0, trennen); wort = wort.substring(trennen + 1); x = Integer.parseInt(teilWort); x = rechnerest(x); x = x + 65; wortbuffer.append((char) x); wort = wortbuffer.tostring(); Abbildung 5.10: Die Methode decodierewort() Der ASCII-Code für die Leertaste beträgt 32. Die Stelle des Leerzeichens innerhalb der Zeichenkette wird mit indexof(32) gesucht und somit der String in zwei Teile zerlegt. Der erste Teilstring wird als teilwort gespeichert und in eine Integerzahl x umgewandelt, die dann der Methode rechnerest() übergeben wird. Diese Methode berechnet den Modulo-Rest und gibt diesen wieder an die Methode decodierewort() zurück. Daraus wird der Klarbuchstabe erzeugt.

10 Kapitel 5 Codierung nach RSA (Lösung) Seite 10/17 Der zweite Teilstring nach dem Leerzeichen wird wieder in der Methode decodierewort() zur weiteren Verarbeitung verwendet. Somit wird der String von Leerzeichen zu Leerzeichen in den Klartext umgewandelt solange die Länge des Strings größer 0 ist. In der Methode rechnerest() wird an Stelle der Variablen eschl die Variable dschl verwendet. private int rechnerest(int zahlh) int zahl, rest = 0; zahl = zahlh; for (int i = 0; i < dschl; i++) rest = zahl % nschl; zahl = rest * zahlh; return rest; Abbildung 5.11: Die Methode rechnerest() Übung: Das Projekt RSA01b behandelt die Entschlüsselung nach RSA. Abbildung 5.12: Die Methoden holedaten() und gibwort() Zusammenfassung Nun sollten die Verschlüsselung und die Entschlüsselung zu einer einzigen Klasse zusammengefasst werden. Hierzu führe ich eine Variable codier vom Typ boolean ein. if (codier == true) codierewort(); if (codier == false) decodierewort(); Abbildung 5.13: Verwendung der Variablen codier

11 Kapitel 5 Codierung nach RSA (Lösung) Seite 11/17 Im Konstruktor wird deren Wert überprüft. Falls sie den Wert true hat, wird die Methode codierewort(), falls sie den Wert false hat, wird die Methode decodierewort() ausgeführt. wort nschl edschl codier RSA holedaten() codierewort() decodierewort() rechnerest() gibwort() Abbildung 5.14: Datenfelder und Methoden der Klasse RSA Übung: Das Projekt RSA01c behandelt die Verschlüsselung/Entschlüsselung nach RSA. Abbildung 5.15: Die Methoden holedaten() und gibwort() beim Codieren bzw. Decodieren

12 Kapitel 5 Codierung nach RSA (Lösung) Seite 12/ Die grafische Oberfläche Gestaltung Die grafische Oberfläche übernehme ich aus Kapitel 1 Abbildung 1.16, Abbildung 5.16: Beispiel für die GUI von RSA02a Es wurden folgende Veränderungen durchgeführt: 1. Name des Fensters 2. Weitere Labels und Textfelder für die Eingabe der Schlüssel. Übung: Das Projekt RSA02a behandelt die Oberfläche Reaktionen Nun müssen wir noch die Reaktionen programmieren, wenn auf die Radiobutton bzw. auf den Button geklickt wird. Die Reaktionen auf die beiden Radiobuttons sind recht einfach. Wird codiert, wird im Einstellungsbereich der öffentliche Schlüssel public key eingetragen, das Textfeld eschltf erwartet den Schlüssel E und im Darstellungsbereich ist das obere Textfeld für den Klartext, das untere für den Geheimtext vorgesehen. Beim Decodieren werden entsprechend geänderte Eintragungen angezeigt. Dementsprechend müssen die Labels die richtige Beschriftung wider geben. private void codierrbitemstatechanged(itemevent evt) if (codierrb.isselected()) textl.settext("public key"); edschll.settext("schluessel E:");

13 Kapitel 5 Codierung nach RSA (Lösung) Seite 13/17 eingabel.settext("klartext:"); ausgabel.settext("geheimtext:"); private void decodierrbitemstatechanged(itemevent evt) if (decodierrb.isselected()) textl.settext("private key"); edschll.settext("schluessel D:"); eingabel.settext("geheimtext: (letztes Zeichen Leertaste!)"); ausgabel.settext("klartext:"); Abbildung 5.17: Methoden zur Beschriftung der Textfelder Die Reaktion auf den Button lässt sich weit gehend aus Projekt Caesar03d übernehmen. Sie unterscheidet sich nur in der Verwendung der zusätzlichen Variablen codieren. Ihr Wert ist true bzw. false je nach Wahl des Radiobuttons. private void uebersetzbactionperformed(actionevent evt) String wort; int nschl, edschl; boolean codieren = true; //gerade aktivierter Radiobutton RSA einrsa = new RSA(); wort = eingabetf.gettext(); nschl = Integer.parseInt(nSchlTF.getText()); edschl = Integer.parseInt(edSchlTF.getText()); if (codierrb.isselected()) codieren = true; if (decodierrb.isselected()) codieren = false; einrsa.holedaten(wort, nschl, edschl, codieren); wort = einrsa.gibwort(); ausgabetf.settext(wort); Abbildung 5.18: Die Methode uebersetzbactionperformed() in der Klasse Ansicht Übung: Das Projekt RSA02b behandelt die Oberfläche mit den Reaktionen.

14 Kapitel 5 Codierung nach RSA (Lösung) Seite 14/17 Abbildung 5.19: Das Projekt RSA02b beim Verschlüsseln Abbildung 5.20: Das Projekt RSA02b beim Entschlüsseln 5.5 Eine stand-alone Applikation Bis jetzt läuft unser Programm nur in der Entwicklungsumgebung BlueJ. Wir wollen es jedoch als selbstständiges Programm an dritte Personen weitergeben können. Hierzu benötigen wir eine so genannte main()-methode. Wird diese Methode beim Aufruf des Programms gefunden, so läuft der Rest sozusagen von allein ab. Ich lege diese Methode main() aus didaktischen Gründen in eine eigene Klasse Codierung. public class Codierung Ansicht ansicht; public Codierung()

15 Kapitel 5 Codierung nach RSA (Lösung) Seite 15/17 ansicht = new Ansicht(); public static void main(string[] args) Codierung q = new Codierung(); Abbildung 5.21: Quellcode der Klasse Codierung Abbildung 5.22: Klassendiagramm von RSA03 mit dem Aufruf der Methode main() Übung: Aus dem Projekt RSA03 kann eine stand-alone-applikation erstellt werden. 5.6 Verbesserung des RSA-Verfahrens Wird nun jeder Buchstabe für sich verschlüsselt, dann erhalten alle gleichen Buchstaben den gleichen Geheimbuchstaben. Das ist natürlich sinnlos, da man mit Hilfe einer Häufigkeitsanalyse recht schnell den Klartext ermitteln kann. Fasst man jedoch zwei Buchstaben zusammen zu einer Zahl, die codiert wird, so ist dieser Geheimtext schon nicht mehr so leicht zu entschlüsseln. Klartext: g e h e i m Nummer:

16 Kapitel 5 Codierung nach RSA (Lösung) Seite 16/17 Zahl: Bemerkung: Beim Durchspielen von RSA04 ergaben sich folgende Probleme: 1. Da immer zwei Buchstaben zusammengefasst werden, muss der Klartext aus einer geraden Anzahl von Buchstaben bestehen. Vorläufig hänge ich zum Schluss ggf. den Buchstaben z noch an. 2. Der Buchstabe Z erhält bei der Durchnummerierung die Zahl 25. Da immer zwei Buchstaben zusammengefasst werden zu einer Zahl, ist die größte vorkommende Zahl Beim Dechiffrieren muss also als Klarzahl wieder 2525 erscheinen. Dies erfolgt nur, wenn bei der Modulo-Rechnung eine größere Zahl als 2525 verwendet wird. Deswegen verwende ich folgende Schlüssel: p = 47, q = 59, N = 2773, E = 17, D = Es kann noch kein Text mit Leerzeichen, Sonderzeichen und Umlauten eingegeben werden, da der ASCII-Code für die Leertaste 32 beträgt. Wird davon 65 abgezogen, kommt man zu einer negativen Zahl, die in der Modulo-Rechnung Probleme bereitet. In der Methode codierewort() werden von zwei aufeinander folgenden Buchstaben die Klarzahlen x1 und x2 ermittelt und zu einer vierstelligen Zahl x zusammengefasst. Diese Zahl wird nun in der Methode rechnerest() dem RSA- Algorithmus unterworfen. for (int i = 0; i < wortlaenge; i = i + 2) ch1 = wort.charat(i); x1 = (int) ch1; x1 = x1-65; ch2 = wort.charat(i + 1); x2 = (int) ch2; x2 = x2-65; x = 100 * x1 + x2; x = rechnerest(x); wortbuffer.append(x + " "); Abbildung 5.23: Änderungen in der Methode codierewort() In der Methode decodierewort() müssen aus der vierstelligen Zahl x wieder die beiden Klarzahlen x1 und x2 ermittelt werden. Die Zahl x2 wird durch mod 100 und die Zahl x1 durch div 100 berechnet. while (wort.length() > 0)

17 Kapitel 5 Codierung nach RSA (Lösung) Seite 17/17 trennen = wort.indexof(32); teilwort = wort.substring(0, trennen); wort = wort.substring(trennen + 1); x = Integer.parseInt(teilWort); x = rechnerest(x); x2 = x % 100; x1 = (int) (x / 100); x1 = x1 + 65; x2 = x2 + 65; wortbuffer.append((char) x1); wortbuffer.append((char) x2); Abbildung 5.24: Änderungen in der Methode decodierewort() Abbildung 5.25: Das Projekt RSA04 beim Verschlüsseln Abbildung 5.26: Das Projekt RSA04 beim Entschlüsseln

4 Codierung nach Viginere (Lösung)

4 Codierung nach Viginere (Lösung) Kapitel 4 Codierung nach Viginere (Lösung) Seite 1/14 4 Codierung nach Viginere (Lösung) 4.1 Einführung Blaise de Vigenère lebte von 1523 bis 1596 in Frankreich und war nach dem Studium bei verschiedenen

Mehr

1 Verschlüsselung nach Caesar

1 Verschlüsselung nach Caesar Kapitel 1 Verschlüsselung nach Caesar (Phase 1) Seite 1/14 1 Verschlüsselung nach Caesar Die Verschlüsselung nach Caesar beruht auf einem Geheimtextalphabet, das um eine bestimmte Stellenanzahl gegenüber

Mehr

Probeklausur Informatik 2 Sommersemester 2013

Probeklausur Informatik 2 Sommersemester 2013 Probeklausur Informatik 2 Sommersemester 2013 1 Probeklausur Informatik 2 Sommersemester 2013 Name: Matrikelnummer: Hilfsmittel: Es sind alle schriftlichen Unterlagen, aber keine elektronischen Hilfsmittel

Mehr

Kommunikationsalgorithmus RSA

Kommunikationsalgorithmus RSA Kommunikationsalgorithmus RSA Herr Maue Ergänzungsfach Informatik Neue Kantonsschule Aarau Früjahrsemester 2015 24.04.2015 EFI (Hr. Maue) Kryptographie 24.04.2015 1 / 26 Programm heute 1. Verschlüsselungsverfahren

Mehr

PRIMZAHLEN PATRICK WEGENER

PRIMZAHLEN PATRICK WEGENER PRIMZAHLEN PATRICK WEGENER 1. Einführung: Was sind Primzahlen? Eine ganze Zahl p, welche größer als 1 ist, heißt Primzahl, wenn sie nur durch 1 und sich selbst teilbar ist. Mit teilbar meinen wir hier

Mehr

KRYPTOSYSTEME & RSA IM SPEZIELLEN

KRYPTOSYSTEME & RSA IM SPEZIELLEN KRYPTOSYSTEME & RSA IM SPEZIELLEN Kryptosysteme allgemein Ein Kryptosystem ist eine Vorrichtung oder ein Verfahren, bei dem ein Klartext mithilfe eines Schlüssels in einen Geheimtext umgewandelt wird (Verschlüsselung)

Mehr

Facharbeit. Public-Key-Verfahren(PGP) Stephan Larws Informatik 02

Facharbeit. Public-Key-Verfahren(PGP) Stephan Larws Informatik 02 Facharbeit Public-Key-Verfahren(PGP) Stephan Larws Informatik 02 1 Inhaltsverzeichnis 1.) DES 2.) Das Problem der Schlüsselverteilung - Lösung von Diffie, Hellman und Merkle 3.) Die Idee der asymmetrischen

Mehr

Programmierstarthilfe SS 2009 Fakultät für Ingenieurwissenschaften und Informatik 4. Blatt Für die Woche vom bis zum 22.5.

Programmierstarthilfe SS 2009 Fakultät für Ingenieurwissenschaften und Informatik 4. Blatt Für die Woche vom bis zum 22.5. Programmierstarthilfe SS 2009 Fakultät für Ingenieurwissenschaften und Informatik 4. Blatt Für die Woche vom 18.5. bis zum 22.5.2009 (KW 21) Organisatorisches Die Webseiten zur Veranstaltung sind unter

Mehr

11. Das RSA Verfahren

11. Das RSA Verfahren Chr.Nelius: Zahlentheorie (SoSe 2017) 53 11. Das RSA Verfahren Bei einer asymmetrischen Verschlüsselung lässt sich der Schlüssel zum Entschlüsseln nicht aus dem Schlüssel zum Verschlüsseln bestimmen und

Mehr

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie

Mehr

n ϕ n

n ϕ n 1 3. Teiler und teilerfremde Zahlen Euler (1707-1783, Gymnasium und Universität in Basel, Professor für Physik und Mathematik in Petersburg und Berlin) war nicht nur einer der produktivsten Mathematiker

Mehr

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 05.10.2016 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2016

Mehr

2 Programmieren in Java I noch ohne Nachbearbeitung

2 Programmieren in Java I noch ohne Nachbearbeitung 1 2 Programmieren in Java I noch ohne Nachbearbeitung 2.1 Was sind Programme? Eingabe = Verarbeitung = Ausgabe Die Eingabe kann sein Konstanten im Quelltext; Kommandozeilenparameter oder interaktive Eingabe

Mehr

public class SternchenRechteckGefuellt {

public class SternchenRechteckGefuellt { Java programmieren: Musterlösungen Konsolen-Aufgaben Aufgabe 1: Gefüllte Rechtecke zeichnen Schreiben Sie ein Programm, das ein durch Sternchen gefülltes Rechteck zeichnet. Der Benutzer soll Breite und

Mehr

Vorkurs Informatik WiSe 17/18

Vorkurs Informatik WiSe 17/18 Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 05.10.2017 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2017

Mehr

Ausgabe:

Ausgabe: Aufgabe 2.10: Schreiben Sie ein Programm, das zunächst die Quadratzahlen zu den Zahlen 1-10 mit Hilfe einer While- Schleife und danach die Quadratzahlen zu den Zahlen 3, 6, 9,.., 30 mit Hilfe einer For-Schleife

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

5 Das Projekt Apfelwein

5 Das Projekt Apfelwein Kapitel 5 Zustandsorientierte Modellierung (Teil 1) Seite 1 5 Das Projekt Apfelwein Bemerkung: In der 10. Jahrgangsstufe (G8) werden die Schüler in die zustandsorientierte Programmierung eingeführt. Dies

Mehr

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen. Ziele sind das Arbeiten mit Funktionen und dem Aufzählungstyp (enum), sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 3: Diese Aufgabe

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 06: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von

Mehr

Mathematisches Kaleidoskop 2014 Materialien Teil 2. Dr. Hermann Dürkop

Mathematisches Kaleidoskop 2014 Materialien Teil 2. Dr. Hermann Dürkop Mathematisches Kaleidoskop 2014 Materialien Teil 2 Dr. Hermann Dürkop 1 1.6 Quadratische Reste und das Legendre-Symbol Im folgenden seien die Moduln p immer Primzahlen. Wir haben bisher gesehen, ob und

Mehr

AES und Public-Key-Kryptographie

AES und Public-Key-Kryptographie Jens Kubieziel jens@kubieziel.de Friedrich-Schiller-Universität Jena Fakultät für Mathem atik und Informatik 22. Juni 2009 Beschreibung des Algorithmus Angriffe gegen AES Wichtige Algorithmen im 20. Jahrhundert

Mehr

Erste Java-Programme (Scopes und Rekursion)

Erste Java-Programme (Scopes und Rekursion) Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Scopes und Rekursion) Tutorium Bioinformatik (WS 18/19) Konstantin: Konstantin.pelz@campus.lmu.de Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/

Mehr

RSA-Verschlüsselung. Verfahren zur Erzeugung der beiden Schlüssel:

RSA-Verschlüsselung. Verfahren zur Erzeugung der beiden Schlüssel: RSA-Verschlüsselung Das RSA-Verfahren ist ein asymmetrisches Verschlüsselungsverfahren, das nach seinen Erfindern Ronald Linn Rivest, Adi Shamir und Leonard Adlemann benannt ist. RSA verwendet ein Schlüsselpaar

Mehr

Wuerfel - augenzahl: int + Wuerfel() + wuerfeln() + gibaugenzahl(): int

Wuerfel - augenzahl: int + Wuerfel() + wuerfeln() + gibaugenzahl(): int Informatik Eph IFG1/2 (GA) Bearbeitungszeit: 90 min. Seite 1 Aufgabe 1: Kniffel Modellierung und Implementierung Im Folgenden sollen Teile eines kleinen "Kniffel"-Spiels modelliert, analysiert und implementiert

Mehr

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8 Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Das RSA Kryptosystem

Das RSA Kryptosystem Kryptografie Grundlagen RSA Institut für Mathematik Technische Universität Berlin Kryptografie Grundlagen RSA mit geheimem mit öffentlichem Schlüssel Realisierung Kryptografie mit geheimem Schlüssel Alice

Mehr

Kryptograhie Wie funktioniert Electronic Banking? Kurt Mehlhorn Adrian Neumann Max-Planck-Institut für Informatik

Kryptograhie Wie funktioniert Electronic Banking? Kurt Mehlhorn Adrian Neumann Max-Planck-Institut für Informatik Kryptograhie Wie funktioniert Electronic Banking? Kurt Mehlhorn Adrian Neumann Max-Planck-Institut für Informatik Übersicht Zwecke der Krytographie Techniken Symmetrische Verschlüsselung( One-time Pad,

Mehr

Einführung in die Programmierung 1

Einführung in die Programmierung 1 Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener

Mehr

Objektorientierung. Klassen und Objekte. Dr. Beatrice Amrhein

Objektorientierung. Klassen und Objekte. Dr. Beatrice Amrhein Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein Überblick Konzepte der Objektorientierten Programmierung Klassen und Objekte o Implementierung von Klassen o Verwendung von Objekten 2 Konzepte

Mehr

Übung 1: Installation + Test von Eclipse. Übung 2: Hello World

Übung 1: Installation + Test von Eclipse. Übung 2: Hello World Übung 1: Installation + Test von Eclipse Es soll die Installation der Entwicklungsumgebung Eclipse durchgeführt werden gemäss Dokument "InstallationTest.Eclipse.15.0.pdf" auf der DVD im Verzeichnis Eclipse.

Mehr

Kryptographie. Teilnehmer: Gruppenleiter: Humboldt-Universität zu Berlin.

Kryptographie. Teilnehmer: Gruppenleiter: Humboldt-Universität zu Berlin. Kryptographie Teilnehmer: Kevin Huber Philippe Gruse Vera Koldewitz Philipp Jakubahs Julian Zimmert Maximilian Werk Hermann-Hesse-Oberschule Heinrich-Hertz-Oberschule Gruppenleiter: Ulf Kühn Humboldt-Universität

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White

Mehr

Das Verschlüsselungsverfahren RSA

Das Verschlüsselungsverfahren RSA Das Verschlüsselungsverfahren RSA von Nora Schweppe Humboldt-Oberschule Berlin Grundkurs Informatik 3 Herr Dietz Inhaltsverzeichnis 1. Einleitung... 1-2 1.1 Symmetrische und asymmetrische Verschlüsselungsverfahren...1

Mehr

Java Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

Java Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung. Java Übung Übung 3 Universität Duisburg-Essen Kommedia, Übung EinPro SS06, 2. Mai 2006 (UniDUE) 2. Mai 2006 1 / 17 Aufgabe 1 Umwandeln von do while in for Schleife. Listing 1: aufgabe3 1.java 1 public

Mehr

Städtisches Gymnasium Olpe Java Ht Informatik - Q1 Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode

Städtisches Gymnasium Olpe Java Ht Informatik - Q1 Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode folgt im Anschluss. Beispielcode Es gibt eine Klasse Benutzerverwaltung, welche eine Liste mit Benutzern

Mehr

Übung Nr. 20 Freitag, 09:00-11:00 Uhr in E3.301

Übung Nr. 20 Freitag, 09:00-11:00 Uhr in E3.301 Übung Nr. 20 Freitag, 09:00-11:00 Uhr in E3.301 Aufgabe 8: Implementierung eines Ereignis-Automaten a) Modellieren Sie einen Ereignis-Automaten für den in der Abbildung dargestellten und in Calculator.java

Mehr

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2 Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Tutoraufgabe 1 (Zweierkomplement): a) Sei x eine ganze Zahl. Wie unterscheiden sich die Zweierkomplement-Darstellungen

Mehr

System.out.println("TEXT");

System.out.println(TEXT); Inhaltsübersicht - Erstes Beispiel - Datentypen - Ausdrücke und Operatoren - Schleifen / Bedinungen - Struktogramme - Grundgerüst eines Programms in JAVA - Einlesen von Daten Erstes Beispiel public class

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Vorsichtige Programmierer verwenden Inkrement- Operatoren nicht in komplizierteren Ausdrücken

Vorsichtige Programmierer verwenden Inkrement- Operatoren nicht in komplizierteren Ausdrücken Vorsichtige Programmierer verwenden Inkrement- Operatoren nicht in komplizierteren Ausdrücken Aufgabe 1.60 a) Welchen Wert erhält die boolesche Variable z in folgendem Beispiel? int i = 2, j = 5; boolean

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 11 Prof. Peter F. Stadler & Dr. Christian Höner zu Siederdissen Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität

Mehr

Gegeben sind die folgenden Programmausschnitte: I. Programmausschnitt: II. Programmausschnitt: III. Programmausschnitt: IV. Programmausschnitt:

Gegeben sind die folgenden Programmausschnitte: I. Programmausschnitt: II. Programmausschnitt: III. Programmausschnitt: IV. Programmausschnitt: Technische Informatik für Ingenieure WS 00/0 Übungsblatt Nr. 0. Januar 0 Übungsgruppenleiter: Matthias Fischer Mouns Almarrani Rafał Dorociak Michael Feldmann Thomas Gewering Benjamin Koch Dominik Lüke

Mehr

SCHRIFTLICHE ZUSAMMENFASSUNG ZUM VORTRAG DIE GRUNDLAGEN DER RSA-VERSCHLÜSSELUNG VON DANIEL METZSCH

SCHRIFTLICHE ZUSAMMENFASSUNG ZUM VORTRAG DIE GRUNDLAGEN DER RSA-VERSCHLÜSSELUNG VON DANIEL METZSCH SCHRIFTLICHE ZUSAMMENFASSUNG ZUM VORTRAG DIE GRUNDLAGEN DER RSA-VERSCHLÜSSELUNG VON DANIEL METZSCH Freie Universität Berlin Fachbereich für Mathematik & Informatik Institut für Mathematik II Seminar über

Mehr

3.5 Kryptographie - eine Anwendung der Kongruenzrechnung

3.5 Kryptographie - eine Anwendung der Kongruenzrechnung 1 3.5 Kryptographie - eine Anwendung der Kongruenzrechnung Das Wort Kryptographie leitet sich aus der griechischen Sprache ab, nämlich aus den beiden Worten κρυπτ oς(kryptos)=versteckt, geheim und γραϕɛιν(grafein)=schreiben.

Mehr

Zahlentheorie, Arithmetik und Algebra I. Felix Teufel Hallo Welt! -Seminar - LS 2

Zahlentheorie, Arithmetik und Algebra I. Felix Teufel Hallo Welt! -Seminar - LS 2 Zahlentheorie, Arithmetik und Algebra I Felix Teufel 26.07.2017 Hallo Welt! -Seminar - LS 2 Überblick Modulare Arithmetik Größter gemeinsamer Teiler Primzahlen Eulersche Φ-Funktion RSA Quellen 26.07.2017

Mehr

Einführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe

Einführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe Ludwig-Maximilians-Universität München München, 04.12.2009 Institut für Informatik Prof. Dr. Christian Böhm Annahita Oswald, Bianca Wackersreuther Einführung in die Programmierung WS 2009/10 Übungsblatt

Mehr

Diskrete Strukturen Kapitel 5: Algebraische Strukturen (RSA-Verfahren)

Diskrete Strukturen Kapitel 5: Algebraische Strukturen (RSA-Verfahren) WS 2016/17 Diskrete Strukturen Kapitel 5: Algebraische Strukturen (RSA-Verfahren) Hans-Joachim Bungartz Lehrstuhl für wissenschaftliches Rechnen Fakultät für Informatik Technische Universität München http://www5.in.tum.de/wiki/index.php/diskrete_strukturen_-_winter_16

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 04: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Kontrollstrukturen: Wiederholungsanweisungen

Kontrollstrukturen: Wiederholungsanweisungen Kontrollstrukturen: Wiederholungsanweisungen Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Wiederholungsanweisungen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

WS 2009/10. Diskrete Strukturen

WS 2009/10. Diskrete Strukturen WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910

Mehr

Ausgeschriebene Informatik-Unterrichtsmitschrift (inklusive Hausaufgaben) vom 28.02.07 V.2. Valentina Tamer

Ausgeschriebene Informatik-Unterrichtsmitschrift (inklusive Hausaufgaben) vom 28.02.07 V.2. Valentina Tamer Ausgeschriebene Informatik-Unterrichtsmitschrift (inklusive Hausaufgaben) vom 280207 V2 Valentina Tamer RSA-Verschlüsselung Legende M (message) = Nachricht im Klartext p, q = (sehr große) Primzahlen N

Mehr

Kapitel 7 Algorithmem Seite 1

Kapitel 7 Algorithmem Seite 1 Kapitel 7 Algorithmem Seite 1 7 Algorithmen In diesem Kapitel will ich einige einfache Algorithmen mit ihren Kontrollstrukturen in Java besprechen. Zum Nachschlagen steht am Ende dieses Kapitels eine Zusammenfassung

Mehr

Programmiertechnik Übungen zu Klassen & -methoden

Programmiertechnik Übungen zu Klassen & -methoden Programmiertechnik Übungen zu Klassen & -methoden Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Übung 1 Ein Verfahren, den größten gemeinsamen Teiler (ggt) zweier Zahlen a und b, a

Mehr

Das RSA-Verfahren. Proseminar Kryptographische Protokolle SS Armin Litzel

Das RSA-Verfahren. Proseminar Kryptographische Protokolle SS Armin Litzel in der Praxis Proseminar Kryptographische Protokolle SS 2009 5.5.2009 in der Praxis Gliederung 1 Grundlegendes über RSA 2 in der Praxis Allgemeine Vorgehensweise zur Verschlüsselung Signieren mit RSA 3

Mehr

Übersicht PERL. !!!! Wichtig: Nach dem Befehl einem Strichpunkt setzen!!!!

Übersicht PERL. !!!! Wichtig: Nach dem Befehl einem Strichpunkt setzen!!!! !!!! Wichtig: Nach dem Befehl einem Strichpunkt setzen!!!! Erste Zeile eines PERL-Scripts: #! /usr/bin/perl Variablen in PERL: Normale Variablen beginnen mit einem $-Zeichen Array-Variablen beginnen mit

Mehr

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7. CoMa 04 Java II Paul Boeck Humboldt Universität zu Berlin Institut für Mathematik 7. Mai 2013 Paul Boeck CoMa 04 7. Mai 2013 1 / 13 Verzweigungen Wenn-Dann Beziehungen if (BEDINGUNG) { else if (BEDINGUNG2)

Mehr

Softwareentwicklung Lösungen zu Programmierung von Klassen mit BlueJ

Softwareentwicklung Lösungen zu Programmierung von Klassen mit BlueJ Klasse, Objekt, Eigenschaften und Verhalten Aufgaben: 1. Erläutern Sie die im obigen Text fett gedruckten Worte. 2. Stellen Sie eine Klasse, die als Bauanleitung für Objekte vom Typ "frische Lebensmittel"

Mehr

Programmierung für Mathematik (HS13)

Programmierung für Mathematik (HS13) software evolution & architecture lab Programmierung für Mathematik (HS13) Übung 11 1 Aufgabe: Codeverständnis 1.1 Aufgabenstellung Notieren Sie, was der folgende Code ausgeben würde, wenn er so in einer

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Kapitel. Platzhalter. Was sind Platzhalter?

Kapitel. Platzhalter. Was sind Platzhalter? Kapitel 3 Was sind? sind ganz wichtige Elemente bei der Programmierung. Alle Programme, die du schon kennst (wie beispielsweise die Textverarbeitung WORD oder ein Programm zum Verschicken von E-Mails),

Mehr

Einführung in die Programmierung. (K-)II/Wb17

Einführung in die Programmierung. (K-)II/Wb17 Probeklausur Hochschule Zittau/Görlitz, Prüfer: Prof. Dr. Georg Ringwelski Einführung in die Programmierung (K-)II/Wb17 Matrikelnummer: Punkte: 1 2 3 4 5 6 Gesamt /21 /19 /20 /20 /20 /20 /120 Spielregeln:

Mehr

Lösung der Klausur zur Vorlesung. Grundlagen der Informatik und Numerik. Dr. Monika Meiler. Jedes Blatt ist mit der Matrikelnummer zu versehen.

Lösung der Klausur zur Vorlesung. Grundlagen der Informatik und Numerik. Dr. Monika Meiler. Jedes Blatt ist mit der Matrikelnummer zu versehen. Lösung der Klausur zur Vorlesung Grundlagen der Inormatik und Numerik Dr. Monika Meiler Bemerkungen: Jedes Blatt ist mit der Matrikelnummer zu versehen. Jede Augabe ist au dem vorgesehenen Blatt zu lösen.

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Ein RSA verwandtes, randomisiertes Public Key Kryptosystem

Ein RSA verwandtes, randomisiertes Public Key Kryptosystem Seminar Codes und Kryptographie WS 2003 Ein RSA verwandtes, randomisiertes Public Key Kryptosystem Kai Gehrs Übersicht 1. Motivation 2. Das Public Key Kryptosystem 2.1 p-sylow Untergruppen und eine spezielle

Mehr

VI.3 RSA. - RSA benannt nach seinen Erfindern R. Rivest, A. Shamir und L. Adleman. - vorgestellt erstes Public-Key Verschlüsselungsverfahren

VI.3 RSA. - RSA benannt nach seinen Erfindern R. Rivest, A. Shamir und L. Adleman. - vorgestellt erstes Public-Key Verschlüsselungsverfahren VI.3 RSA - RSA benannt nach seinen Erfindern R. Rivest, A. Shamir und L. Adleman - vorgestellt 1977 - erstes Public-Key Verschlüsselungsverfahren - auch heute noch das wichtigste Public-Key Verfahren 1

Mehr

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3. Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

Selbsteinstufungstest Vorkurs Programmieren

Selbsteinstufungstest Vorkurs Programmieren VPR Selbsteinstufungstest Vorkurs Programmieren Zeit 90 Minuten Aufgabe 1: Einzigartig (10 Punkte) Schreiben Sie eine Methode die angibt, ob ein String str1 in einem zweiten String str2 genau einmal vorkommt.

Mehr

Übungsblatt 1. Java Vorkurs (WS 2017)

Übungsblatt 1. Java Vorkurs (WS 2017) Übungsblatt 1 Java Vorkurs (WS 2017) Aufgabe 1 Hallo-Welt Erstelle ein neues Projekt mit dem Namen HelloJava. Erzeuge in diesem Projekt eine neue Klasse HelloJava. (a) Schreibe die main-methode in die

Mehr

Kryptographische Verfahren auf Basis des Diskreten Logarithmus

Kryptographische Verfahren auf Basis des Diskreten Logarithmus Kryptographische Verfahren auf Basis des Diskreten Logarithmus -Vorlesung Public-Key-Kryptographie SS2010- Sascha Grau ITI, TU Ilmenau, Germany Seite 1 / 18 Unser Fahrplan heute 1 Der Diskrete Logarithmus

Mehr

Prüfung Softwareentwicklung II (IB)

Prüfung Softwareentwicklung II (IB) Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IB 2 B Sommersemester 2016 Prüfung Softwareentwicklung II (IB) Datum : 11.07.2016, 16:30 Uhr Bearbeitungszeit

Mehr

Kontrollstrukturen: Wiederholungsanweisungen

Kontrollstrukturen: Wiederholungsanweisungen Kontrollstrukturen: Wiederholungsanweisungen Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung https://www.sosy-lab.org/teaching/2017-ws-infoeinf/

Mehr

Java Einführung Klassendefinitionen

Java Einführung Klassendefinitionen Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse

Mehr

Objektorientierte Programmierung OOP Programmieren mit Java

Objektorientierte Programmierung OOP Programmieren mit Java Übungen: 6 Schleifen Objektorientierte Programmierung OOP Programmieren mit Java 1. do-schleife 2. while-schleife 3. a) c) Verschiedene for-schleifen 6 Schleifen Übungen 4. for-schleife: halber Tannenbaum

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:

Mehr

Klausur "C#" WS 2012/2013

Klausur C# WS 2012/2013 PD Dr. J. Reischer 13.02.2013 Klausur "C#" WS 2012/2013 Nachname, Vorname Abschluss (BA, MA, FKN etc.) Matrikelnummer, Semester Versuch (1/2/3) Bitte füllen Sie zuerst den Kopf des Angabenblattes aus!

Mehr

Kurzskript MfI:AGS WS 2018/19 Teil II: Gruppen / Teil III: Ringe 34

Kurzskript MfI:AGS WS 2018/19 Teil II: Gruppen / Teil III: Ringe 34 Kurzskript MfI:AGS WS 2018/19 Teil II: Gruppen / Teil III: Ringe 34 Satz 4.2.11 (Chinesischer Restsatz, Ring-Version) Sind N teilerfremd (d.h. ggt( ) =1), so ist die Abbildung ein Ring-Isomorphismus. :

Mehr

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum: Berufsakademie Stuttgart / Außenstelle Horb Studienbereich Technik Studiengang Informationstechnik Kurs IT2006, 2.Semester Dozent: Olaf Herden Student: Alexander Carls Matrikelnummer: 166270 Aufgabe: Beschreibung

Mehr

Praktikum 1: Einführung, BMI Rechner

Praktikum 1: Einführung, BMI Rechner Praktikum 1: Einführung, BMI Rechner Aufgabe 1: Erstellen und Ausführen einer Java Konsolen-Anwendung Für dieses Semester können Sie wieder NetBeans verwenden. Sie sollten Java auch schon installiert haben.

Mehr

Tagesprogramm. Werte und Typen Methoden und Parameter Ergebnisse und Seiteneffekte.

Tagesprogramm. Werte und Typen Methoden und Parameter Ergebnisse und Seiteneffekte. 1 2017-03-13 Tagesprogramm Werte und Typen Methoden und Parameter Ergebnisse und Seiteneffekte http://pingo.upb.de/839558 Skriptum ab Seite 43 git clone https://github.com/markus2330/pk17s03 2 2017-03-13

Mehr

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Syntax und Semantik): 1. Was ist Syntax? Was ist Semantik? Erläutern Sie den Unterschied. 2.

Mehr

5 Projekt Bankverwaltung

5 Projekt Bankverwaltung Kapitel 5 Bankverwaltung (Lösung) Seite 1/7 5 Projekt Bankverwaltung 5.1 Festlegen der Schnittstelle Bevor du mit der Programmierung beginnst, musst du dir einige Gedanken über die Schnittstelle zwischen

Mehr

Klassen, Vererbung, Benutzereingabe

Klassen, Vererbung, Benutzereingabe Rolf Hennicker, Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Aufgabe 1 Die bisherigen Anwendungen in den Übungen

Mehr

Grundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel Problem

Grundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel  Problem Grundzüge der Wirtschaftsinformatik WS 2002/03 Wiederholung Java Heiko Rossnagel www.m-lehrstuhl.de accelerate.com Grundzüge der Wirtschaftsinformatik WS 2002/03 1 Programmierzyklus Problem Formulierung

Mehr

Informatik Funktionen

Informatik Funktionen Informatik Seite 1 Funktion Mathematik: Zuordnung Argumentwert(e) => Ergebniswerte Beispiel: f(x,y) = 2*x+y Informatik / Programmierung: Zusammenfassung von Anweisungen die von Argumentwerten abhängen

Mehr

/** Main-Methode erzeugt einen neuen Editor zum Testen */ public static void main(string[] args) { new Editor();

/** Main-Methode erzeugt einen neuen Editor zum Testen */ public static void main(string[] args) { new Editor(); Bereich: Grafische Benutzeroberflächen (UI), Events (2) Editor Package: de.dhbwka.java.exercise.ui.editor Klasse: Editor Aufgabenstellung: Schreiben Sie einen kleinen Texteditor mit Swing! Keine Panik,

Mehr

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015 Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Angewandte Kryptographie

Angewandte Kryptographie Angewandte Kryptographie 3. Asymmetrische Verfahren Netzwerksicherheit WS 2001/2002 Jean-Marc Piveteau 1. Die Public Key -Revolution Angewandte Kryptographie Kapitel 2 2 Symmetrische Kryptographie: Die

Mehr

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden Javaprogrammierung mit NetBeans Variablen, Datentypen, Methoden Programmieren 2 Java Bezeichner Bezeichner: Buchstabe _ $ Buchstabe _ $ Ziffer Groß- und Kleinbuchstaben werden strikt unterschieden. Schlüsselwörter

Mehr

Intensivübung zu Algorithmen und Datenstrukturen

Intensivübung zu Algorithmen und Datenstrukturen Intensivübung zu Algorithmen und Datenstrukturen Silvia Schreier Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht Programmierung Fallunterscheidung Flussdiagramm Bedingungen Boolesche

Mehr

Software Entwicklung & Programmierung - 0. Übungsblatt

Software Entwicklung & Programmierung - 0. Übungsblatt public class addieren { * Aufgabe 1: * Implementieren Sie eine Methode, die alle Zahlen von 1 bis zu einer * definierten Zahl n addiert. Beispiel addiere(3) addiert 1 + 2 + 3 = 6 public int addieren(int

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung Grundlagen der Programmierung Prof. H. Mössenböck 14. Schrittweise Verfeinerung Entwurfsmethode für Algorithmen Wie kommt man von der Aufgabenstellung zum Programm? Beispiel geg.: Text aus Wörtern ges.:

Mehr

Einführung in die Kryptographie. 20.6.2011, www.privacyfoundation.ch

Einführung in die Kryptographie. 20.6.2011, www.privacyfoundation.ch Einführung in die Kryptographie 20.6.2011, www.privacyfoundation.ch Kryptographie Name kryptós: verborgen, geheim gráphein: schreiben Verschlüsselung Text so umwandeln, dass man ihn nur noch entziffern/lesen

Mehr

Funktionsweise des. RSA-Verfahrens

Funktionsweise des. RSA-Verfahrens Funktionsweise des RSA-Verfahrens CrypTool-Team November 2010 Kryptografie wozu? Das Verschlüsseln von Nachrichten hat in der Geschichte der Menschheit schon immer eine wichtige Rolle gespielt. In jedem

Mehr

WS 2013/14. Diskrete Strukturen

WS 2013/14. Diskrete Strukturen WS 2013/14 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws1314

Mehr

GI Vektoren

GI Vektoren Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung

Mehr