top of page

Introduction to Cryptography 2

  • Barry Quinn
  • Aug 25, 2017
  • 2 min read

Book Cipher

Μια εύκολη μορφή κρυπτογράφησης η οποία όμως μπορεί να γίνει αρκετά πολύπλοκη ενσωματώνοντας και άλλες μορφές κρυπτογράφησης στην αρχική της μορφή είναι ο Book Cipher.

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

Παράδειγμα:

Έχουμε το παρακάτω κείμενο από ένα προ-συμφωνημένο βιβλίο:

“I don’t know half of you half as well as I should like; and I like less than half of you half as well as you deserve. This was unexpected and rather difficult. There was some scattered clapping, but most of them were trying to work it out and see if it came to a compliment.”

Θέλουμε να κωδικοποιήσουμε την λέξη “bad”.

Βρίσκουμε ποιες λέξεις ξεκινάνε με το πρώτο γράμμα από τα γράμματα που περιέχονται στην λέξη μας και μετράμε την θέση των λέξεων μέσα στο κείμενο μας. Το “b” είναι το πρώτο γράμμα της λέξης “but” η οποία είναι η νούμερο 39 λέξη στο κείμενο. Το “a” είναι το πρώτο γράμμα της λέξης “as” η οποία είναι η λέξη νούμερο 8 και το γράμμα “d” είναι το πρώτο γράμμα της λέξης “don’t” η οποία είναι η λέξη νούμερο 2. Συνεπως η λέξη “bad” κωδικοποιείται ως 39 2 8.

Τώρα αν θέλουμε να κάνουμε την λέξη μας πιο δύσκολο να αποκρυπτογραφηθεί μπορούμε να ενσωματώσουμε τον xor cipher.

O xor cipher είναι ένας επαναλαμβανόμενος αλγόριθμος ο οποίος λειτουργεί ως εξής:

A + 0 = A

A + A = 0

Στην ουσία κωδικοποιούμε την λέξη ή το κείμενο που θέλουμε προσθέτοντας ένα επαναλαμβανόμενο κλείδι(το οποίο μπορεί να είναι απλά μια φράση) μετατρέποντας το κείμενο ή την λέξη και το κλειδί στο δυαδικό σύστημα(binary).

Παράδειγμα:

Έχουμε την λέξη που κωδικοποιήσαμε πριν : 39 2 8

Βρίσκουμε μια λέξη κλειδί πχ. “dkh” από το κείμενο μας, την οποία πάλι κωδικοποιύμε και μετατρέπεται σε 234

Μετατρέπουμε το 39 2 8 σε binary και το κλείδί 234 επίσης.

Αυτό μπορεί να γίνει με το παρακάτω απλό python πρόγραμμα.

a = "text"

print(' '.join(format(ord(x), 'b') for x in a))

Απλά αντικαταστήστε το text με αυτό που θέλετε να μετατρέψετε.

Στην περίπτωση μας το 39 2 8 σε binary είναι,

110011 111001 100000 110010 100000 111000

Και το κλειδί μας είναι,

110010 110011 110100

Προσθέτουμε το κλειδί στην λέξη μας επαναλαμβανόμενα και έχουμε:

(λέξη) 110011 111001 100000 110010 100000 111000

(κλειδί) 110010 110011 110100 110010 110011 110100

(xor cipher) 000001 001010 010100 000000 010011 001100

Για την αποκρυπτογράφηση ακολουθούμε τον ίδιο τρόπο, προσθέτοντας το κλειδί στον xor

(xor cipher) 000001 001010 010100 000000 010011 001100

(κλειδί) 110010 110011 110100 110010 110011 110100

(λέξη) 110011 111001 100000 110010 100000 111000

Η κρυπτογράφηση αυτή είναι όσο δυνατό είναι το κλειδί της. Ένα τυχαίο κλειδί με μέγεθος όσο η λέξη ή το κείμενο μας είναι θεωρητικά αδύνατο να αποκρυπτογραφηθεί.

 
 
 

Comments


Coming Soon..
Click if You Dare..
PedosExposed..
  • ASKfm_logo_owl-1
  • Facebook Social Icon
I'm not here to make you
think like me.I'm here to
make you think.
Ask anything...

Powered by

Crawling, searching, hacking, exposing, etc...

bottom of page