Δημοσιεύτηκε: 27 Αύγ 2011, 14:13
Star_Light έγραψε:ΕΓω στις διακοπές σκέφτηκα πως θα ήταν φοβερο να μπορέσω να φτιάξω ενα πρόγραμμα κρυπτογράφησης σε C είτε του stdin είτε κάποιου άλλου αρχείου. Μιας και τα strings τα έχουμε έτοιμα. Θα πρέπει να φτιάξω μια συναρτηση cypher η οποία θα κάνει ολη την δουλειά και να εισάγω και ένα κλειδί μέσα. Πιστευω ειναι πολυ καλη ιδέα εσεις τι λέτε?
Για αρχή ας πούμε μπορεί ο χρήστης να δίνει την φράση
"hello friend"
και το πρόγραμμα να τυπώνει στην οθόνη
"ehlol rfeidn" δηλαδη θα κάνει μια αντιμετάθεση των στοιχείων ενος πίνακα.
Το ενα θα μπαίνει στην θέση του άλλου (φυσικά εδω δεν χρειάζεται κλειδί)
θα σκεφτω πως μπορω να το υλοποιησω και μονος μου... σκεφτείτε να φτιάξετε ενα ωραιο δικο σας προγραμματακι σε C το οποιο θα κρυπτογραφεί ένα αρχείο κειμένου πριν το στείλετε καπου... ειναι σαν να τρως λαχανικά απο τον κήπο σου!!!!!!!!!![]()
![]()
- Κώδικας: Επιλογή όλων
#include <stdio.h>
// ----------------------------------------------------------------------------------------
char *cipher( char *s )
{
if ( !s )
return NULL;
char *cp = s;
while( *s )
*s++ ^= 13;
return cp;
}
// ----------------------------------------------------------------------------------------
int main( void )
{
char s[] = "This is a test for (dummy) ciphering. / Παράδειγμα (χαζής) κρυπτογράφησης.";
printf("Original:\n%s\n\n", s);
printf("Ciphered:\n%s\n\n", cipher( s ) );
printf("DeCiphered:\n%s\n\n", cipher( s ) );
return 0;
}
Απλή αντικατάσταση κάθε χαρακτήρα του s με τον χαρακτήρα που προκύπτει όταν κάνουμε XOR τον αυθεντικό με μια τιμή (έβαλα 13 εγώ). Εφαρμόζοντας ξανά το ίδιο XOR επανέρχονται στην αυθεντική τους τιμή. Προφανώς δεν πρόκειται για σοβαρή κρυπτογράφηση, εξού και το "dummy cipher" στον κώδικα
Όποιος θέλει μπορεί να δοκιμάσει να φτιάξει το (εξίσου χαζό) ROT13 ciphering: http://en.wikipedia.org/wiki/ROT13