Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> Προγραμματισμός Java

Monoalphabetic Υποκατάσταση Αλγορίθμων Java Code

Στην κρυπτογραφία , κρυπτογράφημα είναι μια μαθηματική τεχνική για να μετατρέψει ένα μήνυμα με τέτοιο τρόπο ώστε να καθιστούν δυσανάγνωστο σε κανέναν άλλο εκτός ακροατήριό του . Αλγόριθμους κρυπτογράφησης και crytography έχουν γίνει ένα ουσιαστικό μέρος του δικτύου επικοινωνιών . Ενώ υπάρχουν πολλές μορφές της κρυπτογράφησης , που όλα προέρχονται από μια ιστορία της κρυπτογράφησης δημιουργίας χρονολογείται από την αρχαία Ρώμη , και τη δημιουργία της πρώτης monoalphabetic κρυπτογράφησης . Ακολουθώντας το παράδειγμα της κρυπτογράφησης του Καίσαρα , ο προγραμματιστής μπορεί να εφαρμόσει μια monoalphabetic κρυπτογράφησης σε μια γλώσσα προγραμματισμού , όπως η Java . Monoalphabetic Αντικαταστάσεις
Η

cryptographers αναφέρεται σε αλγόριθμους κρυπτογράφησης που εφαρμόζουν ένα ενιαίο μετατροπή σε ολόκληρο το μήνυμα ως " monoalphabetic . " Αυτά αλγόριθμους κρυπτογράφησης συνήθως λαμβάνουν έναν απλό αλγόριθμο που εκτελεί μια μεταμόρφωση , και στη συνέχεια να εφαρμόσει αυτό το αλγόριθμο για κάθε χαρακτήρα στο μήνυμα. Η φύση του αλγορίθμου δεν πειράζει πραγματικά , τόσο πολύ , δεδομένου ότι παραμένει συνεπής σε ολόκληρη την κρυπτογράφηση του μηνύματος . Η απλούστερη θα λειτουργήσει σε ένα χαρακτήρα κάθε φορά , ενώ άλλοι μπορεί να χρησιμοποιούν πολλαπλούς χαρακτήρες για να κατασκευάσει το κρυπτογράφημα.
Εικόνων Caesar Cipher and Hill Cipher
Η

Ο απλούστερος monoalphabetic κρυπτογράφησης είναι το Caesar Cipher , που εφευρέθηκε από τον Ιούλιο Καίσαρα για να κρύψει τα μηνύματα από τους εχθρούς του . Η cipher Caesar απλά ορίζει μια αριθμητική τιμή σε γράμματα , και στη συνέχεια να αποφασίσει μια μετατόπιση. Αυτή η απόκλιση μετατοπίζει την αξία των γραμμάτων , και έτσι ανακατεύει το μήνυμα . Αν ο αναγνώστης γνωρίζει το offset , μπορεί απλά να επαναφέρετε τις τιμές και να διαβάσετε το αρχικό μήνυμα . Ο Χιλ Cipher , από την άλλη πλευρά, χρησιμοποιεί μήτρες των χαρακτήρων και τιμές για να προσδιορίσει την κρυπτογράφηση . Για παράδειγμα, ένα λόφο offset κλειδί αξιών 2x2 θα λάβει δύο χαρακτήρες ταυτόχρονα από τη μήτρα και την μετατόπιση αξίας τους .

Η Caesar Cipher σε Java
Η

το Caesar Cipher σε Java περιλαμβάνει τον καθορισμό μια μετατόπιση , και στη συνέχεια, μεταβάλλοντας την τιμή της κάθε γράμμα μιας συμβολοσειράς από αυτήν την μετατόπιση . Ο προγραμματιστής μπορεί να δημιουργήσει μια λίστα με τα γράμματα για να συγκρίνετε το αρχικό μήνυμα κατά του κλειδιού κρυπτογράφησης , και στη συνέχεια να μεταφράσει αυτό το μήνυμα στην κρυπτογράφησης κρυπτογράφησης . Στη συνέχεια , η κρυπτογράφηση γίνεται ένα ζήτημα απλής προσθήκης :

τάξη Καίσαρα {

δημόσια στατική άκυρη κύρια ( String [ ] args ) {

String μήνυμα = " hghajdvudbu " ? String temp = " abcdefghijklmnopqrstuvwxyz " ? int offset = 3 ? String μεταφράσει = new String ( ) ?

για ( int i = 0 ? i

String t = Character.toString ( message.charAt ( i) ) ? δείκτη int = temp.indexOf ( t ) ? δείκτης + = offset 26 % ? String προσθέσετε = Character.toString ( temp.charAt ( index ) ) ?

μεταφράσει + = προσθέσω? System.out.println ( μετάφραση ) ?

} } }
εικόνων 2x2 Χιλ Cipher σε Java
Η

Ο λόφος cipher χρησιμοποιεί ένα κλειδί μήτρα να πολλαπλασιάσετε τις τιμές στο κείμενο , προκειμένου να δημιουργηθεί το κρυπτογράφημα. Σε μία απλή περίπτωση , μια μήτρα 2x2 θα μπορούσε να χρησιμοποιηθεί για να δημιουργήσει ένα κλειδί κρυπτογράφησης . Ο προγραμματιστής θα πρέπει στη συνέχεια να χρησιμοποιήσει δύο χαρακτήρες από το μήνυμα σε ένα χρόνο, προκειμένου να υπολογίσει σωστά το μεταφρασμένο messae , όπως φαίνεται στο ακόλουθο κώδικα :

String μήνυμα = " hghajdvudbu " ? String temp = " abcdefghijklmnopqrstuvwxyz " String μεταφράσει = new String ( ) ?

int πλήκτρο [ ] [ ] = new int [ 2 ] [ 2 ] ?

πλήκτρο [ 0 ] [ 0 ] = 1 ? πλήκτρο [ ,"abcdefghijklmnopqrstuvwxyz " String metafrásei = new String ( ) ?̱

int plí̱ktro [ ] [ ] = new int [ 2 ] [ 2 ] ?̱

plí̱ktro [ 0 ] [ 0 ] = 1 ?̱ plí̱ktro [ 0 ] [ 1 ] = 2 ? πλήκτρο [ 1 ] [ 0 ] = 3 ? πλήκτρο [ 1 ] [ 1 ] = 4 ?

int letterone = 7 ? int lettertwo = 6 ?

int nletterone = ( letterone πλήκτρο * [ 0 ] [ 0 ] ) + ( letterone πλήκτρο * [ 0 ] [ 1 ] ) ? int nlettertwo = ( lettertwo * πλήκτρο [ 1 ] [ 0 ] ) + ( lettertwo * πλήκτρο [ 1 ] [ ,"int nletterone = ( letterone plí̱ktro * [ 0 ] [ 0 ] ) + ( letterone plí̱ktro * [ 0 ] [ 1 ] ) ?̱ int nlettertwo = ( lettertwo * plí̱ktro [ 1 ] [ 0 ] ) + ( lettertwo * plí̱ktro [ 1 ] [ 1 ] ) ?

μεταφράσει = Character.toString ( temp.charAt ( nletterone % 26 ) ) + Character.toString ( temp.charAt ( nlettertwo % 26 ) ) ?
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα