• Downloads
  • ! Read Me !
  • Μαθήματα
  • Φοιτητικά
  • Τεχνικά Θέματα
  • Συζητήσεις
  • Happy Hour!
  • About THMMY.gr
 V  < 
Search:  
Welcome, Guest. Please login or register.
June 17, 2025, 09:41:32 am

Login with username, password and session length
Links
  Thmmy.gr portal
   Forum
   Downloads
   Ενεργ. Λογαριασμού
   Επικοινωνία
  
  Χρήσιμα links
   Σελίδα τμήματος
   Βιβλιοθήκη Τμήματος
   Elearning
   Φοιτητικά fora
   Πρόγραμμα Λέσχης
   Πρακτική Άσκηση
   Ηλεκτρονική Εξυπηρέτηση Φοιτητών
   Διανομή Συγγραμμάτων
   Ψηφιακό Καταθετήριο Διπλωματικών
   Πληροφορίες Καθηγητών
   Instagram @thmmy.gr
   mTHMMY
  
  Φοιτητικές Ομάδες
   ACM
   Aristurtle
   ART
   ASAT
   BEAM
   BEST Thessaloniki
   EESTEC LC Thessaloniki
   EΜΒ Auth
   IAESTE Thessaloniki
   IEEE φοιτητικό παράρτημα ΑΠΘ
   SpaceDot
   VROOM
   Panther
  
Πίνακας Ελέγχου
Welcome, Guest. Please login or register.
June 17, 2025, 09:41:32 am

Login with username, password and session length

Αναζήτηση

Google

THMMY.gr Web
Πρόσφατα
Ισραήλ - Ιράν: Πόλεμος στ...
by okan
[Today at 02:33:21]

Τι ακούτε αυτήν τη στιγμή...
by Katarameno
[Today at 02:29:21]

[Οργάνωση Υπολογιστών] Γε...
by RAFI
[June 16, 2025, 22:46:54 pm]

[Σ.Π.Η.Ε.] Γενικές απορίε...
by Nikos_313
[June 16, 2025, 19:49:00 pm]

[ΘΤΠΑ] Γενικές απορίες κα...
by Nikos_313
[June 16, 2025, 16:56:56 pm]

[Εφ.Θερμοδυναμική] Γενικέ...
by Λαμπτήρας
[June 16, 2025, 15:55:08 pm]

[Αρχές Οικονομίας] Να επι...
by _Trob
[June 16, 2025, 13:28:21 pm]

[Σ.Α.Π.Γ.] Εργασία 2025
by Nikos_313
[June 16, 2025, 12:13:45 pm]

Αποτελέσματα Εξεταστικής ...
by Nikos_313
[June 16, 2025, 12:01:53 pm]

Πρακτική Άσκηση ΤΗΜΜΥ 201...
by George_RT
[June 16, 2025, 10:22:18 am]

[Διανεμημένη Παραγωγή] Γε...
by Διάλεξις
[June 16, 2025, 01:56:37 am]

Αντικατάστασης πυκνωτή σε...
by nmpampal
[June 15, 2025, 16:25:56 pm]

[Σ.Π.Η.Ε.] Παλιά θέματα -...
by nmpampal
[June 15, 2025, 06:43:15 am]

Το thmmy.gr στο instagram...
by Mr Watson
[June 15, 2025, 00:50:23 am]

[Λογισμός ΙΙ] Απορίες σε...
by el mariachi
[June 14, 2025, 20:47:07 pm]

ΠΡΟΣΟΧΗ στο ανέβασμα θεμά...
by tzortzis
[June 14, 2025, 16:54:08 pm]

Ρυθμίσεις Θεμάτων της Ανώ...
by el mariachi
[June 14, 2025, 11:56:45 am]

Πότε θα βγει το μάθημα; -...
by Nikos_313
[June 14, 2025, 10:00:55 am]

Αρχείο Ανακοινώσεων [Arch...
by Nikos_313
[June 14, 2025, 09:58:14 am]

Αλέξης Τσίπρας, η επιστρο...
by Yamal
[June 14, 2025, 04:42:23 am]
Στατιστικά
Members
Total Members: 9960
Latest: valco08
Stats
Total Posts: 1426680
Total Topics: 31710
Online Today: 169
Online Ever: 2093
(April 17, 2025, 08:47:49 am)
Users Online
Users: 10
Guests: 109
Total: 119
kathrin_p
vaggelisx
A-TheITGuy
rafa98p
GeorgeGk
Sotirisbikos
acolak
grepanis
Εμφάνιση

Νέα για πρωτοετείς
Είσαι πρωτοετής;... Καλώς ήρθες! Μπορείς να βρεις πληροφορίες εδώ. Βοήθεια για τους καινούργιους μέσω χάρτη.
Κατεβάστε εδώ το Android Application για εύκολη πρόσβαση στο forum.
Ανεβάζετε τα θέματα των εξετάσεων στον τομέα Downloads με προσοχή στα ονόματα των αρχείων!

Νέα!
Για αλλαγή του public name σας, επικοινωνήστε με έναν από τους Admins.
THMMY.gr > Forum > Μαθήματα Βασικού Κύκλου > 2ο Εξάμηνο > Αντικειμενοστραφής Προγραμματισμός (Moderators: chatzikys, tzortzis) >  [C++] Άσκηση C - 2012/2013 - Προθεσμία 02/12
0 Members and 1 Guest are viewing this topic.
Pages: [1] 2 3 ... 6 Go Down Print
Author Topic: [C++] Άσκηση C - 2012/2013 - Προθεσμία 02/12  (Read 9125 times)
Mr K
Guest
[C++] Άσκηση C - 2012/2013 - Προθεσμία 02/12
« on: November 22, 2012, 20:31:07 pm »

Άσκηση C
Για την κρυπτογράφηση μιας ομάδας δεδομένων που βρίσκεται στη μνήμη του υπολογιστή ακολουθείται η εξής διαδικασία. Δημιουργείται ένα κλειδί που αποτελείται από τυχαίους αριθμούς τύπου usngned char σε μήκος ίσο με τον αριθμό των bytes της ομάδας που πρόκειται να κρυπτογραφηθεί. Tα bytes της ομάδας διαβάζονται ως αριθμοί τύπου usngned char και οι τιμές τους αντικαθίστανται από τις τιμές που προκύπτουν από τη σχέση (text [ ι ]+key [ i ])%256. Όπου text [ i ] η τιμή του i byte της ομάδας που κρυπτογραφείται και key [ i ] η τιμή του byte που βρίσκεται στην ίδια θέση στο κλειδί. Η αποκρυπτογράφηση γίνεται αντικαθιστώντας την τιμή του byte που βρίσκεται στην i θέση του κρυπτογραφήματος με την τιμή (crypt [ i ] – key [ i ]+256)%256.  Όπου crypt [ i ] η τιμή του i byte του κρυπτογραφήματος και key[ i ] η τιμή του byte που βρίσκεται στην ίδια θέση στο κλειδί.(Κρυπτογράφηση Vernam).
 Στην πράξη το κλειδί μπορεί να δημιουργηθεί χρησιμοποιώντας μια ρουτίνα παραγωγής ψευδοτυχαίων αριθμών εισάγοντας, ως σπόρο, ένα μυστικό αριθμό (Περίπτωση Α). Για μεγαλύτερη ασφάλεια χρησιμοποιούνται κλειδιά που σχηματίζονται από πραγματικά τυχαίους αριθμός.(Περίπτωση Β)
Να γραφεί το λογισμικό στο οποίο ορίζεται η κλάση signal η οποία υλοποιεί ένα σήμα το κείμενου του οποίου πρόκειται να κρυπτογραφηθεί. Στην κλάση να ορίζονται δύο συναρτήσεις αρχικών συνθηκών από τις οποίες η πρώτη να δέχεται ως όρισμα έναν ακέραιο ο οποίος να δηλώνει τον αριθμό των bytes του κειμένου που πρόκειται να κρυπτογραφηθεί. Η συνάρτηση να δεσμεύει δυναμικά μνήμη για την καταχώρηση του κειμένου και να διαβάζει τους αντίστοιχους χαρακτήρες. Η δεύτερη συνάρτηση να δέχεται ως ορίσματα έναν ακέραιο που θα δηλώνει τον αριθμό των bytes του κειμένου που θα κρυπτογραφηθεί  και έναν pointer σε στοιχεία τύπου unsigned char ο οποίος να δείχνει τη διεύθυνση της περιοχής όπου βρίσκονται το κείμενο.
Στο λογισμικό να οριστεί και η κλάση skey η οποία να υλοποιεί ένα κλειδί. Στην κλάση να ορίζονται δύο συναρτήσεις αρχικών συνθηκών από τις οποίες η πρώτη να δέχεται ως ορίσματα δύο ακεραίους αριθμούς από τους οποίους, ο πρώτος να δηλώνει το μήκος του κλειδιού και ο δεύτερος να ορίζει τον σπόρο που θα χρησιμοποιηθεί για την παραγωγή της σειράς ψευδοτυχαίων αριθμών που θα αποτελέσουν το κλειδί (Περίπτωση Α). Για την παραγωγή των τυχαίων αριθμών να χρησιμοποιηθούν οι συναρτήσεις srand() και rand() ή αντίστοιχες της βιβλιοθήκης του μεταγλωττιστεί που θα χρησιμοποιήσετε. Η δεύτερη συνάρτηση αρχικών συνθηκών να δέχεται, ως ορίσματα, έναν ακέραιο που να δηλώνει το μήκος του κλειδιού και έναν pointer, σε στοιχεία τύπου unsigned char, ο οποίος να δείχνει τη διεύθυνση της περιοχής όπου βρίσκεται καταχωρημένο το κλειδί (Περίπτωση Β)..
Στο λογισμικό να οριστεί ακόμη η κλάση broadcast, ως public παραγόμενη από τις κλάσεις signal και skey, η οποία να υλοποιεί τη διαδικασία κρυπτογράφησης και αποκρυπτογράφησης ενός μηνύματος. Στην κλάση να οριστεί η συνάρτηση coding() η οποία να κρυπτογραφεί το κείμενο που ορίστηκε από την κλάση signal χρησιμοποιώντας το κλειδί που όρισε η κλάση skey. Η συνάρτηση να  επιστρέφει έναν pointer σε στοιχεία τύπου unsigned char ο οποίος να δείχνει στην περιοχή όπου έχει καταχωρηθεί το κρυπτογράφημα. Στην κλάση να οριστεί ακόμη και η συνάρτηση decoding() η οποία να αποκρυπτογραφεί το κρυπτογράφημα που προέκυψε από τη συνάρτηση coding(). Η συνάρτηση να επιστρέφει έναν pointer σε στοιχεία τύπου unsigned char ο οποίος να δείχνει στην περιοχή όπου έχει καταχωρηθεί το κείμενο που αποκρυπτογραφήθηκε.
Η συνάρτηση main() του προγράμματος να εμφανίζει ένα μενού από το οποίο να επιλέγεται η διαδικασία κρυπτογράφησης ή η διαδικασία αποκρυπτογράφησης. Στη συνέχεια ένα νέο μενού να επιτρέπει να διαλέξουμε με ποιόν τρόπο θέλουμε να εισάγουμε το κείμενο και να δημιουργήσουμε το κλειδί με το οποίο θα το κρυπτογραφήσουμε. Αντίστοιχες επιλογές να έχουμε στην περίπτωση της αποκρυπτογράφησης. Το πρόγραμμα σε κάθε περίπτωση να εμφανίζει το κρυπτογράφημα ή το κείμενο που αποκρυπτογραφήθηκε.
 
Βοηθητικές παρατηρήσεις:
Επειδή κατά την κρυπτογράφηση μπορεί να προκύψουν χαρακτήρες που δεν εμφανίζονται στην οθόνη για την εκτύπωση ή την εισαγωγή του κρυπτογραφήματος να χρησιμοποιούνται οι αντίστοιχοι ASCII κωδικοί.
Οι αριθμοί που αποτελούν το κλειδί πρέπει να είναι ακέραιοι στο διάστημα [0,255].
Οι συναρτήσεις αρχικών συνθηκών της κλάσης signal διακρίνουν δύο περιπτώσεις για την εισαγωγή του κειμένου που θα κρυπτογραφηθεί. Η πρώτη περίπτωση, όπου η συνάρτηση αρχικών συνθηκών δέχεται ένα όρισμα, αφορά την εισαγωγή ενός μικρού μηνύματος την ώρα της κρυπτογράφησης. Στη δεύτερη περίπτωση όπου, ως όρισμα η συνάρτηση αρχικών συνθηκών δέχεται έναν pointer, αφορά την εισαγωγή δεδομένων τα οποία μπορεί να αποτελούν το περιεχόμενο ενός αρχείου το οποίο θέλουμε να κρυπτογραφήσουμε. Για τη συγκεκριμένη άσκηση να εισάγεται αυτές τις τιμές από το πληκτρολόγιο.
« Last Edit: November 25, 2012, 20:54:23 pm by κοντεμνεδ » Logged
Panos_Kanel
Καταξιωμένος/Καταξιωμένη
***
Gender: Male
Posts: 196



View Profile
Re: [C++] Άσκηση C - 2012/2013 - Προθεσμία 02/12
« Reply #1 on: November 23, 2012, 03:18:14 am »

έχω γράψει class broadcast: public signal, public skey{
}
αλλά το πρόβλημα είναι οτι για κάποιο λόγο μετά δε μου δίνει access στις public συναρτήσεις της signal μέσω της broadcast..για την skey μου δίνει...ξέρει κανείς τι λάθος παίζει να χω κάνει ;
Logged

http://www.youtube.com/watch?v=96mMMzgo0ok
Luffy
Εθισμένος στο ΤΗΜΜΥ.gr
*****
Gender: Male
Posts: 636



View Profile
Re: [C++] Άσκηση C - 2012/2013 - Προθεσμία 02/12
« Reply #2 on: November 23, 2012, 13:33:22 pm »

Νταξ... Λιγο υπερβολη με φαινεται..
Logged
c0ndemn3d
Veteran
Αbsolute ΤΗΜΜΥ.gr
******
Posts: 4804


Yarr!


View Profile
Re: [C++] Άσκηση C - 2012/2013 - Προθεσμία 02/12
« Reply #3 on: November 23, 2012, 15:01:09 pm »

(crypt – key+256)%256

γιατί όχι (crypt – key)%256;
Logged

In response, the pirates had to adhere to a doctrine of their own...
war against the world

They took my home, I can't walk away from that; can you?
 Forget me, forget Teach, forget loyalty, compacts, honours, debts, all of it.
The only question that matters is this: Who are you?
ΚΗΜΜΥ
Επιβεβαρυμένος
*********
Gender: Male
Posts: 13065


Κ από το Καμμένος...


View Profile
Re: [C++] Άσκηση C - 2012/2013 - Προθεσμία 02/12
« Reply #4 on: November 23, 2012, 15:06:38 pm »

Χωρις να το εχω δει φανταζομαι για το προσημο πηλικου/υπολοιπου?

κλαιν, αφου με το 256 διαιρεις Tongue
Logged

c0ndemn3d
Veteran
Αbsolute ΤΗΜΜΥ.gr
******
Posts: 4804


Yarr!


View Profile
Re: [C++] Άσκηση C - 2012/2013 - Προθεσμία 02/12
« Reply #5 on: November 23, 2012, 22:49:57 pm »

Quote from: κοντεμνεδ on November 23, 2012, 15:01:09 pm
(crypt – key+256)%256

γιατί όχι (crypt – key)%256;

το 'πιασα
Logged

In response, the pirates had to adhere to a doctrine of their own...
war against the world

They took my home, I can't walk away from that; can you?
 Forget me, forget Teach, forget loyalty, compacts, honours, debts, all of it.
The only question that matters is this: Who are you?
thanospr
Καταξιωμένος/Καταξιωμένη
***
Posts: 115


View Profile
Re: [C++] Άσκηση C - 2012/2013 - Προθεσμία 02/12
« Reply #6 on: November 24, 2012, 15:53:29 pm »

 Γiα την κλαση skey στην περιπτωση Α τι εννοει;Θα κανουμε μια επαναληψη και θα δημιουργουμε εμεις τυχαιους αριθμους;
Logged
Exomag
Veteran
Διεστραμμένος
******
Gender: Male
Posts: 22045


unfortunate...


View Profile
Re: [C++] Άσκηση C - 2012/2013 - Προθεσμία 02/12
« Reply #7 on: November 24, 2012, 16:40:58 pm »

Quote from: thanospr on November 24, 2012, 15:53:29 pm
Γiα την κλαση skey στην περιπτωση Α τι εννοει;Θα κανουμε μια επαναληψη και θα δημιουργουμε εμεις τυχαιους αριθμους;

Η κλάση skey θα δέχεται (μέσω του constructor της) ένα seed (ουσιαστικά έναν int, δηλαδή, που θα εισάγει ο χρήστης), και μέσω του οποίου seed, χρησιμοποιώντας τις συναρτήσεις srand() και rand(), θα δημιουργούνται ψευδοτυχαίοι αριθμοί για το κλειδί key.

Για περισσότερες λεπτομέρειες σχετικά με την παραγωγή ψευδοτυχαίων αριθμών: http://www.cplusplus.com/reference/cstdlib/rand/
Logged

thanospr
Καταξιωμένος/Καταξιωμένη
***
Posts: 115


View Profile
Re: [C++] Άσκηση C - 2012/2013 - Προθεσμία 02/12
« Reply #8 on: November 24, 2012, 17:17:47 pm »

Για την περιπτωση Β δεν ισχυει αυτο ετσι?Δεν δινουμε κανενα int και παραγει μονο του καθε στοιχειο του πινακα key μεσω της srand().
Logged
Exomag
Veteran
Διεστραμμένος
******
Gender: Male
Posts: 22045


unfortunate...


View Profile
Re: [C++] Άσκηση C - 2012/2013 - Προθεσμία 02/12
« Reply #9 on: November 24, 2012, 19:20:44 pm »

Quote from: thanospr on November 24, 2012, 17:17:47 pm
Για την περιπτωση Β δεν ισχυει αυτο ετσι?Δεν δινουμε κανενα int και παραγει μονο του καθε στοιχειο του πινακα key μεσω της srand().

Απ' ότι καταλαβαίνω εγώ, στην Β περίπτωση δε θα δώσει ο χρήστης το seed, αλλά θα δώσει κατευθείαν το key (αυτό θα γίνει μέσω του unsigned char pointer). Υποθέτω πως αυτό χρειάζεται κατά την αποκρυπτογράφηση. Ας με διορθώσει κάποιος αν κάνω λάθος...
Logged

bakeneko
Veteran
Καταστραμμένος
******
Gender: Male
Posts: 7702


?


View Profile WWW
Re: [C++] Άσκηση C - 2012/2013 - Προθεσμία 02/12
« Reply #10 on: November 24, 2012, 22:35:13 pm »

Η κρυπτογράφηση αποκρυπτογράφηση δουλεύει σίγουρα..;;;; Έχω γράψει 2 γραμμές απλά για να το δοκιμάσω και με βγάζει άλλα ντ'άλλων...
Quote
int main(){
  unsigned char text, out;
  int key, text_int, secret, out_int;
  cin >> text;
  cin >> key;
  text_int = (int) text;
  secret = (text_int-key)%256;
  cout << secret << endl;
  out_int = (secret-key+256)%256;
  out = (unsigned char) out_int;
  cout << out;
}
Logged

thanospr
Καταξιωμένος/Καταξιωμένη
***
Posts: 115


View Profile
Re: [C++] Άσκηση C - 2012/2013 - Προθεσμία 02/12
« Reply #11 on: November 25, 2012, 15:03:47 pm »

Δεν ξερω και εγω το εχω αυτο το προβλημμα.Αλλα οταν αλλαξα την εντολη  out_int = (secret-key+256)%256; με αυτην   out_int = (secret+key+256)%256; ολα δουλευαν ΟΚ.Μηπως εχει κανει οντως λαθος;
Logged
Eragon
Εθισμένος στο ΤΗΜΜΥ.gr
*****
Gender: Male
Posts: 672



View Profile
Re: [C++] Άσκηση C - 2012/2013 - Προθεσμία 02/12
« Reply #12 on: November 25, 2012, 16:50:31 pm »

Quote from: thanospr on November 25, 2012, 15:03:47 pm
Δεν ξερω και εγω το εχω αυτο το προβλημμα.Αλλα οταν αλλαξα την εντολη  out_int = (secret-key+256)%256; με αυτην   out_int = (secret+key+256)%256; ολα δουλευαν ΟΚ.Μηπως εχει κανει οντως λαθος;
+1
Logged

Change happens by listening and then starting a dialogue with the people who are doing something you don't believe is right.

Jane Goodall
c0ndemn3d
Veteran
Αbsolute ΤΗΜΜΥ.gr
******
Posts: 4804


Yarr!


View Profile
Re: [C++] Άσκηση C - 2012/2013 - Προθεσμία 02/12
« Reply #13 on: November 25, 2012, 18:03:05 pm »

Όχι, δεν έχει λάθος. Εμένα τουλάχιστον μου βγαίνει σωστά. Και αν ελέγξεις τον τύπο ως τύπο (κάνε ένα μικρό παράδειγμα στο χαρτί) θα δεις ότι όντως βγάζει νόημα. Ίσως βέβαια να εξαρτάται από την υλοποίησή σου.
Logged

In response, the pirates had to adhere to a doctrine of their own...
war against the world

They took my home, I can't walk away from that; can you?
 Forget me, forget Teach, forget loyalty, compacts, honours, debts, all of it.
The only question that matters is this: Who are you?
Exomag
Veteran
Διεστραμμένος
******
Gender: Male
Posts: 22045


unfortunate...


View Profile
Re: [C++] Άσκηση C - 2012/2013 - Προθεσμία 02/12
« Reply #14 on: November 25, 2012, 18:37:26 pm »

Όταν λέει:

Quote
Επειδή κατά την κρυπτογράφηση μπορεί να προκύψουν χαρακτήρες που δεν εμφανίζονται στην οθόνη για την εκτύπωση ή την εισαγωγή του κρυπτογραφήματος να χρησιμοποιούνται οι αντίστοιχοι ASCII κωδικοί.

εννοεί πως αν ο ASCII κωδικός οποιουδήποτε byte του κειμένου που έχει κρυπτογραφηθεί είναι εκτός του διαστήματος [65,90], τότε να τυπώνουμε τον ίδιο τον κωδικό ASCII αντί για το σύμβολο στο οποίο αντιστοιχεί?
Logged

Pages: [1] 2 3 ... 6 Go Up Print
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Scribbles2 | TinyPortal © Bloc | XHTML | CSS
Loading...