Skip to content

Commit c4e94c1

Browse files
committed
Add decrypt to caesar cypher
1 parent d15dc45 commit c4e94c1

File tree

2 files changed

+92
-27
lines changed

2 files changed

+92
-27
lines changed

file-operations/caesar_cipher.py

Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,64 @@
11
from file_utils import remove_accents
22

33

4+
ALPHABET = ('a', 'b', 'c', 'd', 'e', 'f',
5+
'g', 'h', 'i', 'j', 'k', 'l', 'm',
6+
'n', 'o', 'p', 'q', 'r', 's', 't',
7+
'u', 'v', 'w', 'x', 'y', 'z')
8+
9+
410
def encrypt(original_message, key):
511
'''
612
Encrypts a message using the caesar cypher
7-
813
:params original_message, key
914
:returns encrypted_message
1015
'''
1116

12-
alphabet = ('a', 'b', 'c', 'd', 'e', 'f',
13-
'g', 'h', 'i', 'j', 'k', 'l', 'm',
14-
'n', 'o', 'p', 'q', 'r', 's', 't',
15-
'u', 'v', 'w', 'x', 'y', 'z')
16-
1717
encrypted_message = ''
1818

1919
if type(key) == str:
20-
key = alphabet.index(key) + 1
20+
key = ALPHABET.index(key) + 1
2121

2222
# Encrypts the original message then stores in the return variable
2323
for letter in remove_accents(original_message.lower()):
24-
encrypted_letter = ''
25-
if letter not in alphabet:
26-
encrypted_letter = letter
24+
if letter in ALPHABET:
25+
index = ALPHABET.index(letter)
26+
index += key
27+
28+
if index >= len(ALPHABET):
29+
index -= len(ALPHABET)
30+
31+
encrypted_message += ALPHABET[index]
2732
else:
28-
letter_index = alphabet.index(letter)
29-
if letter not in alphabet:
30-
encrypted_letter = letter
31-
elif letter_index + key >= len(alphabet):
32-
encrypted_letter = \
33-
alphabet[letter_index + key - len(alphabet)]
34-
else:
35-
encrypted_letter = alphabet[letter_index + key]
36-
encrypted_message += encrypted_letter
33+
encrypted_message += letter
3734

3835
return encrypted_message
36+
37+
38+
def decrypt(encrypted_message, key):
39+
40+
'''
41+
Decrypts a message using the caesar cypher
42+
:params encrypted_message, key
43+
:returns translated
44+
'''
45+
46+
translated = ''
47+
48+
if type(key) == str:
49+
key = ALPHABET.index(key) + 1
50+
51+
for letter in remove_accents(encrypted_message.lower()):
52+
if letter in ALPHABET:
53+
index = ALPHABET.index(letter)
54+
index -= key
55+
56+
if index < 0:
57+
index += len(ALPHABET)
58+
59+
translated += ALPHABET[index]
60+
61+
else:
62+
translated += letter
63+
64+
return translated

file-operations/file_encrypt.py

Lines changed: 47 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,55 @@
11
import argparse
2-
from caesar_cipher import encrypt
2+
import caesar_cipher
33
from file_utils import get_file_content, store_file_content
44

5-
parser = argparse.ArgumentParser(description='Takes a file as argument and encrypts it')
5+
def main():
66

7-
parser.add_argument('file', metavar='file to be encrypted', type=str)
8-
parser.add_argument('key', metavar='key to encrypt',type=int)
7+
parser = argparse.ArgumentParser(description='Takes a file as argument and encrypts it')
98

10-
args = parser.parse_args()
9+
parser.add_argument('file', metavar='file to be encrypted', type=str)
10+
parser.add_argument('key', metavar='key to encrypt',type=int)
11+
parser.add_argument('mode', metavar='Select the mode (encrypt, decrypt)', type=str)
1112

12-
file_content = get_file_content(args.file)
13+
args = parser.parse_args()
1314

14-
new_file = store_file_content(encrypt(file_content, args.key), 'encriptado.txt')
15+
try:
16+
eval(args.mode)(args.file, args.key)
1517

16-
print(f'content stored on {new_file}')
18+
except NameError:
19+
print(f'The mode {args.mode} does not exists')
20+
21+
22+
def encrypt(file, key):
23+
24+
try:
25+
file_content = get_file_content(file)
26+
27+
if file_content:
28+
new_file = store_file_content(caesar_cipher.encrypt(file_content, key), 'encriptado.txt')
29+
print(f'content stored on {new_file}')
30+
31+
else:
32+
print(f'The file {file} is empty')
33+
34+
except FileNotFoundError:
35+
print(f'The file {file} does not exists')
36+
37+
38+
39+
def decrypt(file, key):
40+
try:
41+
file_content = get_file_content(file)
42+
43+
if file_content:
44+
new_file = store_file_content(caesar_cipher.decrypt(file_content, key), 'decriptado.txt')
45+
print(f'Content stored on {new_file}')
46+
47+
else:
48+
print(f'The file {file} is empty')
49+
50+
except FileNotFoundError:
51+
print(f'The file {file} does not exists')
52+
53+
54+
if __name__ == "__main__":
55+
main()

0 commit comments

Comments
 (0)