Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Pouziva sa kniznica itertools a jej funkcia product na generovanie vsetkych moznosti (variacii) / chceme poznat vsetky kluce
- from itertools import product
- # Zasifrovana sprava (cast z nej, mozes nahradit za cely text)
- cipher_text = 'RSX ZRTOGM AQ MYWGHYHIAY DI RNETEN FKJIV.'
- # Pomocna funkcia na detekciu ci ide o male pismenko
- def is_upper_case(char):
- return 65 <= char and char <= 90
- # Obdobne ci ide o velke pismenko
- def is_lower_case(char):
- return 97 <= char and char <= 122
- # Ide o pismeno vobec?
- def is_letter(char):
- return is_upper_case(char) or is_lower_case(char)
- # Sifrovanie pomocou vigenerovej sifry (aj desifrovanie, kedze sifra pracuje rovnako iba kluc sa "preklapa")
- def crypt(input_text, key):
- output_text = ''
- z = 0
- for index in range(0, len(input_text)):
- c = ord(input_text[index])
- output_character = ''
- if (is_upper_case(c)):
- output_character = chr((c - 65 + key[z % len(key)]) % 26 + 65)
- z += 1
- elif (is_lower_case(c)):
- output_character = chr((c - 97 + key[z % len(key)]) % 26 + 97)
- z += 1
- else:
- output_character = chr(c)
- output_text += output_character
- return output_text
- # Ziskanie numerickych hodnot kluca
- def filter_key(key):
- result = []
- for index in range(0, len(key)):
- c = ord(key[index])
- if (is_letter(c)):
- result.append((c - 65) % 32)
- return result
- # Vypis do konzoly a suboru "vystup.txt", ak chces pustit druhy a treti krat, zmaz tento subor "vystup.txt" najprv
- def vypis(text):
- print(text)
- with open('vystup.txt', 'a') as my_file:
- my_file.write(text + '\n')
- my_file.close()
- # Mozne pismenka v kluci
- ALPHABET = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
- # Dlzka kluca
- KEY_LENGTH = 5
- # Ziskanie vsetkych variacii (moznych klucov)
- POSSIBLE_KEYS = [''.join(i) for i in product(ALPHABET, repeat = KEY_LENGTH)]
- # Dekodovanie pomocou klucov
- for key in POSSIBLE_KEYS:
- transformed_key = filter_key(key)
- for i in range(0, len(transformed_key)):
- transformed_key[i] = 26 - transformed_key[i] % 26
- vypis('Key: ' + key)
- vypis("Decoded: " + crypt(cipher_text, transformed_key) + '\n')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement