ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 131: ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I ΕΡΓΑΣΙΑ 2



Σχετικά έγγραφα
ΕΡΓΑΣΙΑ 1 Ημερομηνία Ανάρτησης: 02/02/2017 Ημερομηνία Παράδοσης: 16/02/2017, 09:00 π.μ. Στόχος Ορισμός

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΡΓΑΣΙΑ 3. Παίζοντας Sudoku. Ημερομηνία Ανάρτησης: 16/03/2018 Ημερομηνία Παράδοσης: 03/04/2018, 09:00

Παίζοντας Τόμπολα. Ημερομηνία Ανάρτησης: 16/03/2017 Ημερομηνία Παράδοσης: 30/03/2017, 23:59

ΕΡΓΑΣΙΑ 2. Κατασκευάζοντας Ημερολόγια. Ημερομηνία Ανάρτησης: 23/02/2018 Ημερομηνία Παράδοσης: 13/03/2018, 09:00

Σχηματίζοντας Γραφικές Παραστάσεις για Ημίτονο και Συνημίτονο και Ελέγχοντας Περιορισμούς σε Συστάδες Καρτών Τόμπολας

«Μηχανή Αναζήτησης Αρχείων» Ημερομηνία Παράδοσης: 30/04/2015, 09:00 π.μ.

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 8 η. Βασίλης Στεφανής

ΕΠΛ 674: Εργαστήριο 1 Ασφάλεια Επικοινωνιακών Συστημάτων - Κρυπτογραφία

ΕΡΓΑΣΙΑ 4 - Αντικειμενοστραφής Υλοποίηση του Συστήματος Κατανομής Θέσεων σε Προγράμματα Σπουδών

ΕΡΓΑΣΙΑ 2 - Παίζοντας Blackjack

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Κρυπτογραφία. Εργαστηριακό μάθημα 1

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΟΜΑΔΑ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ ΣΠΟΥΔΩΝ ΟΙΚΟΝΟΜΙΑΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

8.3.4 Τεχνικές Ασφάλειας Συμμετρική Κρυπτογράφηση Ασυμμετρική Κρυπτογράφηση Ψηφιακές Υπογραφές

Εφαρμοσμένη Κρυπτογραφία Ι

Κρυπτογραφία. Κεφάλαιο 1 Γενική επισκόπηση

Κρυπτογράφηση Αποκρυπτογράφηση Ερευνητική εργασία Β'1 1 ο Γενικό Λύκειο Ευόσμου

Ασφάλεια Υπολογιστικών Συστηµάτων

ΕΡΓΑΣΙΑ 4. Εκλογικό Σύστημα με Μεταφορά και Συσσώρευση Ψήφων. Ημερομηνία Ανάρτησης: 16/04/2018 Ημερομηνία Παράδοσης: 04/05/2018, 09:00

Εισαγωγή στην επιστήμη της Πληροφορικής και των. Aσφάλεια

Πληροφορική Ι. Μάθημα 10 ο Ασφάλεια. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Δρ. Γκόγκος Χρήστος

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 5 Ανάπτυξη Προγράμματος Συμπίεσης/Αποσυμπίεσης Αρχείων

κρυπτογραϕία Ψηφιακή ασφάλεια και ιδιωτικότητα Γεώργιος Σπαθούλας Msc Πληροφορική και υπολογιστική βιοιατρική Πανεπιστήμιο Θεσσαλίας

ΕΠΑΝΑΛΗΠΤΙΚΟ ΤΕΣΤ ΣΤΗΝ ΕΝΟΤΗΤΑ

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο

Γράψτε ένα πρόγραμμα που θα προσομοιώνει τη ρίψη ενός νομίσματος και θα εμφανίζει στην οθόνη Κορώνα» ή «Γράμματα».

Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών. Aσφάλεια

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΗ ΑΣΚΗΣΗ 2

Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών. Aσφάλεια

ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. α. Πριν εμφανιστεί η τεχνολογία ISDN οι υπηρεσίες φωνής, εικόνας και δεδομένων απαιτούσαν διαφορετικά δίκτυα.

Κρυπτογραφία. Κεφάλαιο 4 Αλγόριθμοι Δημοσίου Κλειδιού (ή ασύμμετροι αλγόριθμοι)

Οι απειλές. Απόρρητο επικοινωνίας. Αρχές ασφάλειας δεδομένων. Απόρρητο (privacy) Μέσω κρυπτογράφησης

Ηλεκτρονικό εμπόριο. HE 7 Τεχνολογίες ασφάλειας

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών Ασφάλεια Δεδομένων.

ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ ΣΤΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΘΩΣ ΚΑΙ ΣΤΟ ΔΙΑΔΙΚΤΥΟ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ

ΕΠΛ 674: Εργαστήριο 2 Ο απλοποιημένος αλγόριθμος κρυπτογράφησης S-DES

Ασφάλεια Πληροφοριακών Συστημάτων

Ασφάλεια Ασύρματων & Κινητών Επικοινωνιών

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική Ι. Ενότητα 10 : Ασφάλεια. Δρ. Γκόγκος Χρήστος

ΤΕΛΟΣ 1ΗΣ ΑΠΟ 6 ΣΕΛΙΔΕΣ

Κρυπτογραφία και Ηλεκτρονικοί Υπολογιστές. ΣΥΝΤΕΛΕΣΤΕΣ: Κραβαρίτης Αλέξανδρος Μαργώνη Αγγελική Χαλιμούρδα Κων/να

Κρυπ Κρ το υπ γραφία Κρυπ Κρ το υπ λογίας

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. Κρυπτογραφία. Εισαγωγή. Χρήστος Ξενάκης

ΤΕΛΟΣ 1ΗΣ ΑΠΟ 5 ΣΕΛΙ ΕΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΗΜΕΡΟΜΗΝΙΑ: 6/04/2014

Οδηγίες Εγκατάστασης και Χρήσης Ψηφιακών Πιστοποιητικών

ΕΠΛ 475: Εργαστήριο 2 Ο απλοποιημένος αλγόριθμος κρυπτογράφησης S-DES

Κρυπτογραφία. Κωνσταντίνου Ελισάβετ

ΕΠΑΝΑΛΗΠΤΙΚΟ ΤΕΣΤ ΣΤΗΝ ΕΝΟΤΗΤΑ

Δραστηριότητες σχετικά με κρυπτογραφία και ελέγχους ισοτιμίας

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. Κρυπτογραφία. Κρυπτοαλγόριθμοι. Χρήστος Ξενάκης

Α2. Να γράψετε στο τετράδιο σας τον αριθμό 1-4 κάθε πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή.

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Τμήμα Τηλεπληροφορικής & Διοίκησης

ΘΕΜΑ Α. 1. Η δυαδική αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένες συλλογές δεδομένων.

Ασφάλεια Υπολογιστικών Συστημάτων

ΤΕΙ Κρήτης Τμήμα Μηχανικών Πληροφορικής. Συμμετρική Κρυπτογραφία

Συμμετρικά κρυπτοσυστήματα

ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Δ Εξάμηνο. Κρυπτογραφία: Συμμετρική Κρυπτογράφηση

ΨΗΦΙΑΚΑ ΠΙΣΤΟΠΟΙΗΤΙΚΑ ΓΙΑ ΑΣΦΑΛΗ ΚΑΙ ΠΙΣΤΟΠΟΙΗΜΕΝΗ ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΗΝ ΤΡΑΠΕΖΑ ΤΗΣ ΕΛΛΑΔΟΣ. Οδηγίες προς τις Συνεργαζόμενες Τράπεζες

ΚΕΦΑΛΑΙΟ 2 ΑΛΓΟΡΙΘΜΟΙ ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ ΘΕΩΡΙΑ

YΒΡΙΔΙΚΗ ΚΡΥΠΤΟΓΡΑΦΙΑ

Υπολογιστική Θεωρία Αριθμών και Κρυπτογραφία

Μοντελοποίηση υπολογισμού. Θέματα Υπολογισμού στον Πολιτισμό Πεπερασμένα αυτόματα

1. Τι είναι ακεραιότητα δεδομένων, με ποιους μηχανισμούς επιτυγχάνετε κ πότε θα χρησιμοποιούσατε τον καθένα εξ αυτών;

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Ασφάλεια Πληροφοριακών Συστηµάτων

Κρυπτογραφία. Εργαστηριακό μάθημα 5 Stream ciphers Κρυπτανάλυση με τον αλγόριθμο Berlekamp-Massey

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσµία: 10/11/12, 22:00

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ )

Λειτουργικά Συστήματα (ΗΥ321)

Ασφάλεια Πληροφοριακών Συστημάτων

Ασφάλεια Πληροφοριακών Συστημάτων

ΚΡΥΠΤΟΓΡΑΦΙΑ. Σκοπός: η δημιουργία ασφαλούς επικοινωνίας. «κρυπτός» + «γράφω» τρόπος απόκρυψης περιεχομένου των μηνυμάτων

ΤΕΛΟΣ 1ΗΣ ΑΠΟ 5 ΣΕΛΙ ΕΣ

W i. Subset Sum Μια παραλλαγή του προβλήματος knapsack είναι το πρόβλημα Subset Sum, το οποίο δεν λαμβάνει υπόψιν την αξία των αντικειμένων:

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΕΣΠΕΡΙΝΩΝ

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΣΤΑ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ Γ Τάξη Ε.Π.Α.Λ.

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

Ασφάλεια (PGP)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων. Συναρτήσεις Κατακερματισμού

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΗΜΕΡΗΣΙΩΝ

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ

Ασφάλεια Πληροφοριακών Συστημάτων

8.3 Ασφάλεια ικτύων. Ερωτήσεις

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ - ΓΛΩΣΣΑ

Γ ε ν ι κ ό Λ ύ κ ε ι ο Ε λ ε υ θ ε ρ ο ύ π ο λ η ς. Α λ γ ό ρ ι θ μ ο ι

Στοιχεία Θεωρίας Αριθμών & Εφαρμογές στην Κρυπτογραφία

ΤΕΛΟΣ 1ΗΣ ΑΠΟ 5 ΣΕΛΙ ΕΣ

Transcript:

ΕΡΓΑΣΙΑ Διδάσκων: Γιώργος Χρυσάνθου Υπεύθυνος Άσκησης: Πύρρος Μπράτσκας Ημερομηνία Ανάθεσης: 3/10/015 Ημερομηνία Παράδοσης: 09/11/015 09:00 π.μ. I.Στόχος Στόχος αυτής της εργασίας είναι η χρησιμοποίηση βρόγχων, πινάκων, δομών ελέγχου, συμβολοσειρών και μεθόδων. Διαβάστε προσεχτικά το πρόβλημα και κατανοήστε τι πρέπει να γίνει. Μετά εκτελέστε παραδείγματα στο χέρι. Γράψετε κάτω ποιες μεταβλητές και τύποι δεδομένων πιστεύετε θα είναι χρήσιμες στη λύση του προβλήματος. Στη συνέχεια γράψτε μια λίστα με λειτουργίες που θα ήταν χρήσιμες για την λύση του προβλήματος. II. Εισαγωγή Κρυπτογράφηση (encryption) ονομάζεται η διαδικασία μετασχηματισμού ενός μηνύματος σε μία ακατανόητη μορφή με τη χρήση κάποιου κρυπτογραφικού αλγορίθμου ούτως ώστε να μην μπορεί να διαβαστεί από κανέναν εκτός του νόμιμου παραλήπτη. Η αντίστροφη διαδικασία όπου από το κρυπτογραφημένο κείμενο παράγεται το αρχικό μήνυμα ονομάζεται αποκρυπτογράφηση (decryption). Η ορολογία που χρησιμοποιείται σε αυτό το τομέα της πληροφορικής περιλαμβάνει τους παρακάτω όρους: Κρυπτογραφικός αλγόριθμος (cipher) είναι η μέθοδος μετασχηματισμού δεδομένων σε μία μορφή που να μην επιτρέπει την αποκάλυψη των περιεχομένων τους από μη εξουσιοδοτημένα μέρη. Κατά κανόνα ο κρυπτογραφικός αλγόριθμος είναι μία πολύπλοκη μαθηματική συνάρτηση. Αρχικό κείμενο (plaintext) είναι το μήνυμα το οποίο αποτελεί την είσοδο σε μία διεργασία κρυπτογράφησης. Κλειδί (key) είναι ένας αριθμός αρκετών bit που χρησιμοποιείται ως είσοδος στη συνάρτηση κρυπτογράφησης. Κρυπτογραφημένο κείμενο (ciphertext) είναι το αποτέλεσμα της εφαρμογής ενός κρυπτογραφικού αλγόριθμου πάνω στο αρχικό κείμενο. Η διαδικασία της κρυπτογράφησης και της αποκρυπτογράφησης φαίνεται στο παρακάτω σχήμα. Εικόνα 1 Ένα τυπικό σύστημα κρυπτογράφησης - αποκρυπτογράφησης. ΕΠΛ131 Υπεύθυνος εργασίας: Πύρρος Μπράτσκας 1

Η κρυπτογράφηση και αποκρυπτογράφηση ενός μηνύματος γίνεται με τη βοήθεια ενός αλγόριθμου κρυπτογράφησης (cipher) και ενός κλειδιού κρυπτογράφησης (key). Συνήθως ο αλγόριθμος κρυπτογράφησης είναι γνωστός, οπότε η εμπιστευτικότητα του κρυπτογραφημένου μηνύματος που μεταδίδεται βασίζεται ως επί το πλείστον στη μυστικότητα του κλειδιού κρυπτογράφησης. Το μέγεθος του κλειδιού κρυπτογράφησης μετριέται σε αριθμό bits. Γενικά ισχύει ο εξής κανόνας: όσο μεγαλύτερο είναι το κλειδί κρυπτογράφησης, τόσο δυσκολότερα μπορεί να αποκρυπτογραφηθεί το κρυπτογραφημένο μήνυμα από επίδοξους εισβολείς. Διαφορετικοί αλγόριθμοι κρυπτογράφησης απαιτούν διαφορετικά μήκη κλειδιών για να πετύχουν το ίδιο επίπεδο ανθεκτικότητας κρυπτογράφησης. III. Αλγόριθμος κρυπτογράφησης/αποκρυπτογράφησης Στην εργασία αυτή πρέπει να δημιουργήσετε ένα σύστημα κρυπτογράφησης/αποκρυπτογράφησης. Για να γίνει αυτό, δημιουργήστε τον πιο κάτω πίνακα κρυπτογράφησης/αποκρυπτογράφησης χρησιμοποιώντας τα γράμματα του αλφάβητου. 0 1 3 4 0 A B C D E 1 F G H I J K L M N O 3 P Q/Z R S T 4 U V W X Y Πίνακας 1. Η κωδικοποίηση των γραμμάτων γίνετε ως εξής: Θα πρέπει να δημιουργήσετε μια συμβολοσειρά από αριθμούς παίρνοντας για κάθε γράμμα του μηνύματος τον αριθμό της γραμμής και της στήλης. Π.χ. εάν θέλουμε να κωδικοποιήσουμε το γράμμα G, θα πρέπει να πάρουμε την γραμμή 1 και την στήλη 1 που μας δίνει την συμβολοσειρά 11. Για το γράμμα T η αντίστοιχη συμβολοσειρά είναι 34. Για να κωδικοποιήσουμε ένα μήνυμα θα πρέπει να μετατρέψουμε το κάθε γράμμα του μηνύματος μας σε συμβολοσειρά δυο ψηφίων. IV. Αλγόριθμος Κρυπτογράφησης Ο αλγόριθμος κρυπτογράφησης αποτελείται από 4 βήματα. Ας εξηγήσουμε τον αλγόριθμο αυτό μέσο ενός παραδείγματος. Έστω ότι το μήνυμα που θέλουμε να κωδικοποιήσουμε είναι: GATES HILLMAN CENTER Βήμα 1: Αντικατάσταση γραμμάτων Αντικαθιστώντας κάθε γράμμα του μηνύματος με την αντίστοιχη συμβολοσειρά του από το Πίνακα 1, παίρνουμε την συμβολοσειρά: 1100340433 11311003 004334043 Όμως, αυτή η συμβολοσειρά δεν είναι το τελικό κωδικοποιημένο μήνυμα που θέλουμε. Βήμα : Λέξη κλειδί ΕΠΛ131 Υπεύθυνος εργασίας: Πύρρος Μπράτσκας

Το επόμενο βήμα είναι να δώσουμε την λέξη κλειδί αποτελούμενη από γράμματα που εμφανίζονται μόνο μια φορά στην λέξη. Από την λέξη κλειδί θα δημιουργήσουμε ένα πινάκα που θα έχει το ίδιο αριθμό στηλών όσο είναι και το πλήθος γραμμάτων της λέξης κλειδί. Μέσα σε αυτό τον πίνακα θα καταχωρίσουμε τους χαρακτήρες της συμβολοσειράς που δημιουργήσαμε στο προηγούμενο βήμα, παίρνοντας τα ψηφία ένα προς ένα και καταχωρώντας τα στον πίνακα, γεμίζοντας έτσι την πρώτη γραμμή, μετά την δεύτερη κλπ. Για παράδειγμα, εάν χρησιμοποιήσουμε την λέξη CORTINA για λέξηκλειδί, τότε θα είχαμε τον πιο κάτω πινάκα: Βήμα 3: Ταξινόμηση C O R T I N A 1 1 0 0 3 4 0 4 3 3 1 1 3 1 1 0 0 3 0 0 4 3 3 4 0 4 3 Εφόσον έχουμε δημιουργήσει τον πιο πάνω πίνακα μετά θα πρέπει να βάλουμε τις στήλες του πίνακα σε αλφαβητική σειρά βάση των χαρακτήρων της λέξης κλειδί, μετακινώντας έτσι και τις στήλες του πίνακα. Το αποτέλεσμα που θα έχουμε με βάση τον πιο πάνω πινάκα θα είναι το ακόλουθο: A C I N O R T 0 1 3 4 1 0 0 3 4 1 3 3 1 0 1 1 4 0 0 3 0 3 0 4 3 3 4 Βήμα 4: Το τελικό κωδικοποιημένο μήνυμα Για να ολοκληρώσουμε την διαδικασία κωδικοποίησης θα πρέπει να γράψουμε το μήνυμα μας ανά στήλη αφαιρώντας το γράμμα που βρίσκεται στο πάνω μέρος της στήλης. Έτσι, το τελικό κωδικοποιημένο μήνυμα που θα αποστείλουμε είναι: 03043 140 30 4104 1313 0333 01104 V. Αλγόριθμος Αποκρυπτογράφησης Η αποκωδικοποίηση αυτού του μηνύματος γίνεται εφικτή εάν γνωρίζουμε την λέξη-κλειδί. Φυσικά θα πρέπει να αντιστρέψετε την διαδικασία που κάναμε στην κωδικοποίηση για να μπορέσετε να το αποκωδικοποιήσετε. VI. Το πρόγραμμα Σε αυτήν την εργασία καλείστε να γράψετε ένα πρόγραμμα σε Java που θα κρυπτογραφεί και θα αποκρυπτογραφεί διάφορα μηνύματα. Ξεκινώντας το πρόγραμμα σας θα πρέπει να εμφανίσει στο χρήστη ένα menu όπως πιο κάτω: ΕΠΛ131 Υπεύθυνος εργασίας: Πύρρος Μπράτσκας 3

. Decode the message Make your choice: _ Στην περίπτωση που ο χρήστης εισάγει 1, τότε το πρόγραμμα πρέπει να εκτελέσει τον αλγόριθμο της κρυπτογράφησης. Το πρόγραμμα θα δέχεται από το πληκτρολόγιο το μήνυμα που θέλουμε να κρυπτογραφήσουμε και την λέξη κλειδί. Μια λέξη κλειδί θεωρείται σωστή εάν ο κάθε χαρακτήρας της είναι αλφαβητικός χαρακτήρας και εμφανίζεται μόνο μια φορά στην λέξη. Σε αντίθετη περίπτωση το πρόγραμμα θα πρέπει να ζητεί από τον χρήστη να δώσει ξανά την λέξη κλειδί μέχρι να δώσει μια σωστή λέξη κλειδί. Ο χρηστής μπορεί να δώσει το μήνυμα που θέλει να κωδικοποιήσει και την λέξη κλειδί σε κεφαλαία γράμματα ή μικρά γράμματα. Το πρόγραμμα σας θα πρέπει να μετατρέπει το μήνυμα σας και την λέξη κλειδί σε κεφαλαία γράμματα και να αφαιρεί, εάν υπάρχουν, τους αριθμούς από το μήνυμα. Το πρόγραμμα σας θα κωδικοποιεί το μήνυμα με βάση τον αλγόριθμο που περιγράφεται στο κεφάλαιο ΙV της εκφώνησης. Μπορείτε να θεωρήσετε ότι το μέγεθος του μηνύματος που μετατρέψατε σε ψηφία θα έχει τουλάχιστον το ίδιο μέγεθος με την λέξη κλειδί. Συνεχίζοντας, το πρόγραμμα σας θα πρέπει: να εμφανίσει το αρχικό σας μήνυμα σε κεφαλαία γράμματα και με τα σωστά διαστήματα μεταξύ λέξεων αλλά χωρίς ψηφία να εμφανίσει το μήνυμά σας ψηφιοποιημένο να εμφανίσει τον πίνακα που έχετε δημιουργήσει με την λέξη-κλειδί μετά θα εμφανίσει τον πίνακα που έχετε δημιουργήσει με την λέξη-κλειδί με τις στήλες σε αλφαβητική σειρά και τέλος, το κωδικοποιημένο μήνυμα με βάση τις στήλες. Στην περίπτωση που ο χρήστης εισάγει, τότε το πρόγραμμα πρέπει να εκτελέσει τον αλγόριθμο αποκρυπτογράφησης. Για να γίνει αυτό, το πρόγραμμα πρέπει να ζητά από το χρήστη το κωδικοποιημένο μήνυμα και την λέξη κλειδί. Το πρόγραμμα πρέπει να ελέγχει εάν το κωδικοποιημένο μήνυμα αποτελείται μόνο από ψηφία (αριθμούς), εάν όχι να του ξαναζήτα ένα άλλο κωδικοποιημένο μήνυμα μέχρι ο χρήστης να εισάγει ένα σωστό μήνυμα αποτελούμενο μόνο από ψηφία. Στη συνέχεια, το πρόγραμμα να ζητά από το χρήστη τη λέξη κλειδί, για την οποία πρέπει να ακολουθείται η ίδια διαδικασία με την περίπτωση κρυπτογράφησης ως προς την καταλληλότητά της. Συνεχίζοντας, το πρόγραμμα σας θα πρέπει: να εμφανίσει τον πίνακα που έχετε δημιουργήσει με την λέξη-κλειδί με τις στήλες σε αλφαβητική σειρά να εμφανίσει τον πίνακα που έχετε δημιουργήσει με την λέξη-κλειδί μετά θα εμφανίσει το μήνυμά σας ψηφιοποιημένο βάση του πίνακα του κεφαλαίου III της εκφώνησης. Και στο τέλος να εμφανίσει το αποκωδικοποιημένο μήνυμα. ΕΠΛ131 Υπεύθυνος εργασίας: Πύρρος Μπράτσκας 4

VII. Παράδειγμα εκτέλεσης. Decode the message Make your choice: _1 Please enter your message: GATES HILLMAN center-6017 Please enter your keyword: simpson Please enter your keyword: 7UP Please enter your keyword: ABBA Please enter your keyword: cortina GATESHILLMANCENTER 110034043311311003004334043 C O R T I N A 1 1 0 0 3 4 0 4 3 3 1 1 3 1 1 0 0 3 0 0 4 3 3 4 0 4 3 A C I N O R T 0 1 3 4 1 0 0 3 4 1 3 3 1 0 1 1 4 0 0 3 0 3 0 4 3 3 4 Encoded message is: 03043 140 30 4104 1313 0333 01104. Decode the message Make your choice: _ Please enter your encrypted message: 03043 140 30 4104 131g3 0333 01104e Please enter your encrypted message: 03043 140 30 4104 1313 0333 01104 Please enter your keyword: Cortana Please enter your keyword: cortina ΕΠΛ131 Υπεύθυνος εργασίας: Πύρρος Μπράτσκας 5

A C I N O R T 0 1 3 4 1 0 0 3 4 1 3 3 1 0 1 1 4 0 0 3 0 3 0 4 3 3 4 C O R T I N A 1 1 0 0 3 4 0 4 3 3 1 1 3 1 1 0 0 3 0 0 4 3 3 4 0 4 3 110034043311311003004334043 Decoded message is: GATESHILLMANCENTER. Decode the message Make your choice: _3 ΕΠΛ131 Υπεύθυνος εργασίας: Πύρρος Μπράτσκας 6

VIII. Παράδοση 1. Όταν έχετε τελειώσει με τον πηγαίο κώδικα, μεταγλωττίστε το και βεβαιωθείτε ότι τρέχει σωστά.. Παραδώστε τον πηγαίο κώδικα (userid_erg.java) ηλεκτρονικά μέσω του submit assignment (κάτω από το Ασκήσεις Εργασία στην ιστοσελίδα του μαθήματος μέχρι τις 09/11/015 και ώρα 09:00 π.μ. Όπου userid βάλτε το username που σας δόθηκε από το τμήμα. 3. Προσοχή: Το σύστημα ελέγχει το χρόνο παράδοσης εργασιών γι αυτό μην περιμένετε την τελευταία στιγμή να κάνετε submit την εργασία σας. 4. Στα εργαστήρια (09/11/015) θα πρέπει να παραδώσετε σε χαρτί τον πηγαίο κώδικα. Ο κώδικας που θα αποστείλετε ηλεκτρονικά και ο κώδικας που θα παραδώσετε σε χαρτί πρέπει να είναι ακριβώς ο ίδιος. Σε αντίθετη περίπτωση παίρνετε αυτόματα βαθμολογία 0. IX. Βαθμολογία Σημαντικό μέρος της αξιολόγησης θα αποτελέσει η ταχύτητα εκτέλεσης του προγράμματος. Επίσης, ένα πρόγραμμα για να πάρει όλες τις μονάδες είναι απαραίτητο να: 1. χρησιμοποιεί σχόλια. ευθυγραμμισμένος κώδικας 3. αυτό-επεξηγηματικά ονόματα για τις μεταβλητές Για όλα τα παραπάνω ακολουθήστε τις οδηγίες που περιγράφονται εδώ: http://introcs.cs.princeton.edu/java/11style/ Το αρχείο με το πηγαίο κώδικα πρέπει οπωσδήποτε να περιέχει μια συμπληρωμένη κατάλληλα επικεφαλίδα από σχόλια στην αρχή του αρχείου όπως: /** * Author: Γράψτε εδώ το όνομα σας * Written:../../014 * Last updated:../../014 * * Compilation: javac userid_erg.java * Execution: java userid_erg * * Γράψτε εδώ πληροφορίες σχετικά με το τι κάνει * το πρόγραμμα * */ Κώδικας που δε μεταγλωττίζει ή δεν τρέχει (crashes) παίρνει αυτόματα βαθμολογία 0. ΕΠΛ131 Υπεύθυνος εργασίας: Πύρρος Μπράτσκας 7