C99 : Πρόγραμμα Παραγωγής Μοναδικών Κωδικών

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

C99 : Πρόγραμμα Παραγωγής Μοναδικών Κωδικών

Δημοσίευσηαπό migf1 » 01 Σεπ 2011, 22:06

Πρόγραμμα παραγωγής μοναδικών κωδικών, με δυνατότητα εύκολης παραμετροποίησης μέσα στον κώδικα, αλλάζοντας τιμές σε μερικά macros και μια μεταβλητή.

Πιο συγκεκριμένα, η παραμετροποίηση των επιλογών γίνεται με απλή προσθαφαίρεση γραμμών στον ορισμό μιας και μόνης μεταβλητής στην main(), της: options, που είναι ένα απλό bit-flagged byte. Οπότε μπορεί κανείς πολύ εύκολα να επιλέξει ποιες από τις ομάδες χαρακτήρων θα συμμετέχουν στην διαδικασία παραγωγής των κλειδιών, και να προσθαφαιρέσει απαιτήσεις ύπαρξης τουλάχιστον ενός χαρακτήρα από οποιαδήποτε ομάδα. Μπορεί ακόμα να επιλέξει ναι μεν να μην συμμετέχει γενικώς μια ομάδα χαρακτήρων στην παραγωγή, αλλά να υπάρχει εγγυημένα ένας τυχαίος χαρακτήρας της σε μια τυχαία θέση του κάθε κλειδιού.

Η παραμετροποίηση του μεγέθους και του πλήθους των παραγόμενων κλειδιών γίνεται με αλλαγή των τιμών στα αντίστοιχα macros (όπως και τυχόν προσθαφαίρεση χαρακτήρων στις υπό-ομάδες χαρακτήρων).

Σε περίπτωση που θέλετε να αποθηκεύσετε την λίστα των παραγόμενων κλειδιών π.χ. σε ένα αρχείο keys.txt, απλά τρέξτε το πρόγραμμα σε γραμμή εντολών προσθέτοντας στο τέλος του ονόματός του " >keys.txt" (χωρίς τα εισαγωγικά). Το αρχείο που θα δημιουργηθεί θα έχει ένα κλειδί σε κάθε γραμμή.

Δείγμα Εξόδου (με NKEYS = 15, KEYSIZE = 10+1, κι ενεργοποιημένες όλες τις επιλογές στη μεταβλητή options)
Κώδικας: Επιλογή όλων

6iD@qrS#R,
0mde%JQiNY
.gQF\8B%>t
52FCiXph(,
a!^~7w)D{-
KG^sWMy0!1
-BT)>9_TxO
dt|@F+r/7G
n9z~HM]r]R
+<64Ng@$^H
T7?7NBFtr_
YtL3GXb+Jr
hH#(|zGM"7
e#~eY/:2!t
5-SZ"R[x]G

Μπορείτε να δείτε τον κώδικα με syntax highlighting και να τον κατεβάσετε από εδώ: http://ideone.com/nAsRj
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι

cron