Skip to content

Commit 9d745b6

Browse files
jenia90github-actionspoyea
authoredOct 16, 2020
Add typehints ciphers and bool alg (TheAlgorithms#3264)
* updating DIRECTORY.md * updating DIRECTORY.md * Fixed accidental commit of file I have't touched * fixup! Format Python code with psf/black push * updating DIRECTORY.md * updating DIRECTORY.md * Fixed some suggested coding style issues * Update rsa_key_generator.py * Update rsa_key_generator.py Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Co-authored-by: John Law <[email protected]>
1 parent 5b024f4 commit 9d745b6

25 files changed

+92
-73
lines changed
 

‎boolean_algebra/quine_mc_cluskey.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
def compare_string(string1, string2):
1+
def compare_string(string1: str, string2: str) -> str:
22
"""
33
>>> compare_string('0010','0110')
44
'0_10'
@@ -19,7 +19,7 @@ def compare_string(string1, string2):
1919
return "".join(l1)
2020

2121

22-
def check(binary):
22+
def check(binary: [str]) -> [str]:
2323
"""
2424
>>> check(['0.00.01.5'])
2525
['0.00.01.5']
@@ -43,7 +43,7 @@ def check(binary):
4343
binary = list(set(temp))
4444

4545

46-
def decimal_to_binary(no_of_variable, minterms):
46+
def decimal_to_binary(no_of_variable: int, minterms: [float]) -> [str]:
4747
"""
4848
>>> decimal_to_binary(3,[1.5])
4949
['0.00.01.5']
@@ -59,7 +59,7 @@ def decimal_to_binary(no_of_variable, minterms):
5959
return temp
6060

6161

62-
def is_for_table(string1, string2, count):
62+
def is_for_table(string1: str, string2: str, count: int) -> bool:
6363
"""
6464
>>> is_for_table('__1','011',2)
6565
True
@@ -79,7 +79,7 @@ def is_for_table(string1, string2, count):
7979
return False
8080

8181

82-
def selection(chart, prime_implicants):
82+
def selection(chart: [[int]], prime_implicants: [str]) -> [str]:
8383
"""
8484
>>> selection([[1]],['0.00.01.5'])
8585
['0.00.01.5']
@@ -126,7 +126,7 @@ def selection(chart, prime_implicants):
126126
chart[j][i] = 0
127127

128128

129-
def prime_implicant_chart(prime_implicants, binary):
129+
def prime_implicant_chart(prime_implicants: [str], binary: [str]) -> [[int]]:
130130
"""
131131
>>> prime_implicant_chart(['0.00.01.5'],['0.00.01.5'])
132132
[[1]]

‎ciphers/affine_cipher.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def main():
2929
print(f"\n{mode.title()}ed text: \n{translated}")
3030

3131

32-
def check_keys(keyA, keyB, mode):
32+
def check_keys(keyA: int, keyB: int, mode: str) -> None:
3333
if mode == "encrypt":
3434
if keyA == 1:
3535
sys.exit(
@@ -90,7 +90,7 @@ def decrypt_message(key: int, message: str) -> str:
9090
return plainText
9191

9292

93-
def get_random_key():
93+
def get_random_key() -> int:
9494
while True:
9595
keyA = random.randint(2, len(SYMBOLS))
9696
keyB = random.randint(2, len(SYMBOLS))

‎ciphers/base64_cipher.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
def encode_base64(text):
1+
def encode_base64(text: str) -> str:
22
r"""
33
>>> encode_base64('WELCOME to base64 encoding 😁')
44
'V0VMQ09NRSB0byBiYXNlNjQgZW5jb2Rpbmcg8J+YgQ=='
@@ -33,7 +33,7 @@ def encode_base64(text):
3333
return r[0 : len(r) - len(p)] + p
3434

3535

36-
def decode_base64(text):
36+
def decode_base64(text: str) -> str:
3737
r"""
3838
>>> decode_base64('V0VMQ09NRSB0byBiYXNlNjQgZW5jb2Rpbmcg8J+YgQ==')
3939
'WELCOME to base64 encoding 😁'

‎ciphers/brute_force_caesar_cipher.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
def decrypt(message):
1+
def decrypt(message: str) -> None:
22
"""
33
>>> decrypt('TMDETUX PMDVU')
44
Decryption using Key #0: TMDETUX PMDVU

‎ciphers/cryptomath_module.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
def gcd(a, b):
1+
def gcd(a: int, b: int) -> int:
22
while a != 0:
33
a, b = b % a, a
44
return b
55

66

7-
def findModInverse(a, m):
7+
def findModInverse(a: int, m: int) -> int:
88
if gcd(a, m) != 1:
99
return None
1010
u1, u2, u3 = 1, 0, a

‎ciphers/decrypt_caesar_with_chi_squared.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
#!/usr/bin/env python3
22

3+
from typing import Tuple
4+
35

46
def decrypt_caesar_with_chi_squared(
57
ciphertext: str,
6-
cipher_alphabet=None,
7-
frequencies_dict=None,
8+
cipher_alphabet: str = None,
9+
frequencies_dict: str = None,
810
case_sensetive: bool = False,
9-
) -> tuple:
11+
) -> Tuple[int, float, str]:
1012
"""
1113
Basic Usage
1214
===========

‎ciphers/deterministic_miller_rabin.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"""
44

55

6-
def miller_rabin(n, allow_probable=False):
6+
def miller_rabin(n: int, allow_probable: bool = False) -> bool:
77
"""Deterministic Miller-Rabin algorithm for primes ~< 3.32e24.
88
99
Uses numerical analysis results to return whether or not the passed number
@@ -87,7 +87,7 @@ def miller_rabin(n, allow_probable=False):
8787
return True
8888

8989

90-
def test_miller_rabin():
90+
def test_miller_rabin() -> None:
9191
"""Testing a nontrivial (ends in 1, 3, 7, 9) composite
9292
and a prime in each range.
9393
"""

‎ciphers/diffie.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
def find_primitive(n):
1+
def find_primitive(n: int) -> int:
22
for r in range(1, n):
33
li = []
44
for x in range(n - 1):

‎ciphers/elgamal_key_generator.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def main():
1919
# so I used 4.80 Algorithm in
2020
# Handbook of Applied Cryptography(CRC Press, ISBN : 0-8493-8523-7, October 1996)
2121
# and it seems to run nicely!
22-
def primitiveRoot(p_val):
22+
def primitiveRoot(p_val: int) -> int:
2323
print("Generating primitive root of p")
2424
while True:
2525
g = random.randrange(3, p_val)
@@ -30,7 +30,7 @@ def primitiveRoot(p_val):
3030
return g
3131

3232

33-
def generateKey(keySize):
33+
def generateKey(keySize: int) -> ((int, int, int, int), (int, int)):
3434
print("Generating prime p...")
3535
p = rabinMiller.generateLargePrime(keySize) # select large prime number.
3636
e_1 = primitiveRoot(p) # one primitive root on modulo p.
@@ -43,7 +43,7 @@ def generateKey(keySize):
4343
return publicKey, privateKey
4444

4545

46-
def makeKeyFiles(name, keySize):
46+
def makeKeyFiles(name: str, keySize: int):
4747
if os.path.exists("%s_pubkey.txt" % name) or os.path.exists(
4848
"%s_privkey.txt" % name
4949
):

‎ciphers/hill_cipher.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ class HillCipher:
6464

6565
to_int = numpy.vectorize(lambda x: round(x))
6666

67-
def __init__(self, encrypt_key):
67+
def __init__(self, encrypt_key: int):
6868
"""
6969
encrypt_key is an NxN numpy array
7070
"""

‎ciphers/mixed_keyword_cypher.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
def mixed_keyword(key="college", pt="UNIVERSITY"):
1+
def mixed_keyword(key: str = "college", pt: str = "UNIVERSITY") -> str:
22
"""
33
44
For key:hello

‎ciphers/morse_code_implementation.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
}
5858

5959

60-
def encrypt(message):
60+
def encrypt(message: str) -> str:
6161
cipher = ""
6262
for letter in message:
6363
if letter != " ":
@@ -69,7 +69,7 @@ def encrypt(message):
6969
return cipher[:-1]
7070

7171

72-
def decrypt(message):
72+
def decrypt(message: str) -> str:
7373
decipher = ""
7474
letters = message.split(" ")
7575
for letter in letters:

‎ciphers/onepad_cipher.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33

44
class Onepad:
5-
def encrypt(self, text):
5+
def encrypt(self, text: str) -> ([str], [int]):
66
"""Function to encrypt text using pseudo-random numbers"""
77
plain = [ord(i) for i in text]
88
key = []
@@ -14,7 +14,7 @@ def encrypt(self, text):
1414
key.append(k)
1515
return cipher, key
1616

17-
def decrypt(self, cipher, key):
17+
def decrypt(self, cipher: [str], key: [int]) -> str:
1818
"""Function to decrypt text using pseudo-random numbers."""
1919
plain = []
2020
for i in range(len(key)):

‎ciphers/playfair_cipher.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def chunker(seq, size):
1111
yield chunk
1212

1313

14-
def prepare_input(dirty):
14+
def prepare_input(dirty: str) -> str:
1515
"""
1616
Prepare the plaintext by up-casing it
1717
and separating repeated letters with X's
@@ -37,7 +37,7 @@ def prepare_input(dirty):
3737
return clean
3838

3939

40-
def generate_table(key):
40+
def generate_table(key: str) -> [str]:
4141

4242
# I and J are used interchangeably to allow
4343
# us to use a 5x5 table (25 letters)
@@ -59,7 +59,7 @@ def generate_table(key):
5959
return table
6060

6161

62-
def encode(plaintext, key):
62+
def encode(plaintext: str, key: str) -> str:
6363
table = generate_table(key)
6464
plaintext = prepare_input(plaintext)
6565
ciphertext = ""
@@ -82,7 +82,7 @@ def encode(plaintext, key):
8282
return ciphertext
8383

8484

85-
def decode(ciphertext, key):
85+
def decode(ciphertext: str, key: str) -> str:
8686
table = generate_table(key)
8787
plaintext = ""
8888

‎ciphers/porta_cipher.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
}
2929

3030

31-
def generate_table(key):
31+
def generate_table(key: str) -> [(str, str)]:
3232
"""
3333
>>> generate_table('marvin') # doctest: +NORMALIZE_WHITESPACE
3434
[('ABCDEFGHIJKLM', 'UVWXYZNOPQRST'), ('ABCDEFGHIJKLM', 'NOPQRSTUVWXYZ'),
@@ -38,7 +38,7 @@ def generate_table(key):
3838
return [alphabet[char] for char in key.upper()]
3939

4040

41-
def encrypt(key, words):
41+
def encrypt(key: str, words: str) -> str:
4242
"""
4343
>>> encrypt('marvin', 'jessica')
4444
'QRACRWU'
@@ -52,15 +52,15 @@ def encrypt(key, words):
5252
return cipher
5353

5454

55-
def decrypt(key, words):
55+
def decrypt(key: str, words: str) -> str:
5656
"""
5757
>>> decrypt('marvin', 'QRACRWU')
5858
'JESSICA'
5959
"""
6060
return encrypt(key, words)
6161

6262

63-
def get_position(table, char):
63+
def get_position(table: [(str, str)], char: str) -> (int, int) or (None, None):
6464
"""
6565
>>> table = [
6666
... ('ABCDEFGHIJKLM', 'UVWXYZNOPQRST'), ('ABCDEFGHIJKLM', 'NOPQRSTUVWXYZ'),
@@ -76,7 +76,7 @@ def get_position(table, char):
7676
return (None, None) if row == -1 else (row, table[row].index(char))
7777

7878

79-
def get_opponent(table, char):
79+
def get_opponent(table: [(str, str)], char: str) -> str:
8080
"""
8181
>>> table = [
8282
... ('ABCDEFGHIJKLM', 'UVWXYZNOPQRST'), ('ABCDEFGHIJKLM', 'NOPQRSTUVWXYZ'),

‎ciphers/rabin_miller.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import random
44

55

6-
def rabinMiller(num):
6+
def rabinMiller(num: int) -> bool:
77
s = num - 1
88
t = 0
99

@@ -25,7 +25,7 @@ def rabinMiller(num):
2525
return True
2626

2727

28-
def isPrime(num):
28+
def isPrime(num: int) -> bool:
2929
if num < 2:
3030
return False
3131

@@ -210,7 +210,7 @@ def isPrime(num):
210210
return rabinMiller(num)
211211

212212

213-
def generateLargePrime(keysize=1024):
213+
def generateLargePrime(keysize: int = 1024) -> int:
214214
while True:
215215
num = random.randrange(2 ** (keysize - 1), 2 ** (keysize))
216216
if isPrime(num):

‎ciphers/rot13.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
def dencrypt(s: str, n: int = 13):
1+
def dencrypt(s: str, n: int = 13) -> str:
22
"""
33
https://en.wikipedia.org/wiki/ROT13
44

‎ciphers/rsa_cipher.py

+20-8
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def main():
4040
print(decryptedText)
4141

4242

43-
def getBlocksFromText(message, blockSize=DEFAULT_BLOCK_SIZE):
43+
def getBlocksFromText(message: int, blockSize: int = DEFAULT_BLOCK_SIZE) -> [int]:
4444
messageBytes = message.encode("ascii")
4545

4646
blockInts = []
@@ -52,7 +52,9 @@ def getBlocksFromText(message, blockSize=DEFAULT_BLOCK_SIZE):
5252
return blockInts
5353

5454

55-
def getTextFromBlocks(blockInts, messageLength, blockSize=DEFAULT_BLOCK_SIZE):
55+
def getTextFromBlocks(
56+
blockInts: [int], messageLength: int, blockSize: int = DEFAULT_BLOCK_SIZE
57+
) -> str:
5658
message = []
5759
for blockInt in blockInts:
5860
blockMessage = []
@@ -65,7 +67,9 @@ def getTextFromBlocks(blockInts, messageLength, blockSize=DEFAULT_BLOCK_SIZE):
6567
return "".join(message)
6668

6769

68-
def encryptMessage(message, key, blockSize=DEFAULT_BLOCK_SIZE):
70+
def encryptMessage(
71+
message: str, key: (int, int), blockSize: int = DEFAULT_BLOCK_SIZE
72+
) -> [int]:
6973
encryptedBlocks = []
7074
n, e = key
7175

@@ -74,24 +78,32 @@ def encryptMessage(message, key, blockSize=DEFAULT_BLOCK_SIZE):
7478
return encryptedBlocks
7579

7680

77-
def decryptMessage(encryptedBlocks, messageLength, key, blockSize=DEFAULT_BLOCK_SIZE):
81+
def decryptMessage(
82+
encryptedBlocks: [int],
83+
messageLength: int,
84+
key: (int, int),
85+
blockSize: int = DEFAULT_BLOCK_SIZE,
86+
) -> str:
7887
decryptedBlocks = []
7988
n, d = key
8089
for block in encryptedBlocks:
8190
decryptedBlocks.append(pow(block, d, n))
8291
return getTextFromBlocks(decryptedBlocks, messageLength, blockSize)
8392

8493

85-
def readKeyFile(keyFilename):
94+
def readKeyFile(keyFilename: str) -> (int, int, int):
8695
with open(keyFilename) as fo:
8796
content = fo.read()
8897
keySize, n, EorD = content.split(",")
8998
return (int(keySize), int(n), int(EorD))
9099

91100

92101
def encryptAndWriteToFile(
93-
messageFilename, keyFilename, message, blockSize=DEFAULT_BLOCK_SIZE
94-
):
102+
messageFilename: str,
103+
keyFilename: str,
104+
message: str,
105+
blockSize: int = DEFAULT_BLOCK_SIZE,
106+
) -> str:
95107
keySize, n, e = readKeyFile(keyFilename)
96108
if keySize < blockSize * 8:
97109
sys.exit(
@@ -112,7 +124,7 @@ def encryptAndWriteToFile(
112124
return encryptedContent
113125

114126

115-
def readFromFileAndDecrypt(messageFilename, keyFilename):
127+
def readFromFileAndDecrypt(messageFilename: str, keyFilename: str) -> str:
116128
keySize, n, d = readKeyFile(keyFilename)
117129
with open(messageFilename) as fo:
118130
content = fo.read()

‎ciphers/rsa_factorization.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import random
1414

1515

16-
def rsafactor(d: int, e: int, N: int) -> list[int]:
16+
def rsafactor(d: int, e: int, N: int) -> [int]:
1717
"""
1818
This function returns the factors of N, where p*q=N
1919
Return: [p, q]

‎ciphers/rsa_key_generator.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import os
22
import random
33
import sys
4+
from typing import Tuple
45

56
from . import cryptomath_module as cryptoMath
67
from . import rabin_miller as rabinMiller
@@ -12,7 +13,7 @@ def main():
1213
print("Key files generation successful.")
1314

1415

15-
def generateKey(keySize):
16+
def generateKey(keySize: int) -> Tuple[Tuple[int, int], Tuple[int, int]]:
1617
print("Generating prime p...")
1718
p = rabinMiller.generateLargePrime(keySize)
1819
print("Generating prime q...")
@@ -33,7 +34,7 @@ def generateKey(keySize):
3334
return (publicKey, privateKey)
3435

3536

36-
def makeKeyFiles(name, keySize):
37+
def makeKeyFiles(name: int, keySize: int) -> None:
3738
if os.path.exists("%s_pubkey.txt" % (name)) or os.path.exists(
3839
"%s_privkey.txt" % (name)
3940
):

‎ciphers/simple_substitution_cipher.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def main():
2121
print("\n{}ion: \n{}".format(mode.title(), translated))
2222

2323

24-
def checkValidKey(key):
24+
def checkValidKey(key: str) -> None:
2525
keyList = list(key)
2626
lettersList = list(LETTERS)
2727
keyList.sort()
@@ -31,23 +31,23 @@ def checkValidKey(key):
3131
sys.exit("Error in the key or symbol set.")
3232

3333

34-
def encryptMessage(key, message):
34+
def encryptMessage(key: str, message: str) -> str:
3535
"""
3636
>>> encryptMessage('LFWOAYUISVKMNXPBDCRJTQEGHZ', 'Harshil Darji')
3737
'Ilcrism Olcvs'
3838
"""
3939
return translateMessage(key, message, "encrypt")
4040

4141

42-
def decryptMessage(key, message):
42+
def decryptMessage(key: str, message: str) -> str:
4343
"""
4444
>>> decryptMessage('LFWOAYUISVKMNXPBDCRJTQEGHZ', 'Ilcrism Olcvs')
4545
'Harshil Darji'
4646
"""
4747
return translateMessage(key, message, "decrypt")
4848

4949

50-
def translateMessage(key, message, mode):
50+
def translateMessage(key: str, message: str, mode: str) -> str:
5151
translated = ""
5252
charsA = LETTERS
5353
charsB = key

‎ciphers/trafid_cipher.py

+9-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# https://en.wikipedia.org/wiki/Trifid_cipher
22

33

4-
def __encryptPart(messagePart, character2Number):
4+
def __encryptPart(messagePart: str, character2Number: dict) -> str:
55
one, two, three = "", "", ""
66
tmp = []
77

@@ -16,7 +16,7 @@ def __encryptPart(messagePart, character2Number):
1616
return one + two + three
1717

1818

19-
def __decryptPart(messagePart, character2Number):
19+
def __decryptPart(messagePart: str, character2Number: dict) -> (str, str, str):
2020
tmp, thisPart = "", ""
2121
result = []
2222

@@ -32,7 +32,7 @@ def __decryptPart(messagePart, character2Number):
3232
return result[0], result[1], result[2]
3333

3434

35-
def __prepare(message, alphabet):
35+
def __prepare(message: str, alphabet: str) -> (str, str, dict, dict):
3636
# Validate message and alphabet, set to upper and remove spaces
3737
alphabet = alphabet.replace(" ", "").upper()
3838
message = message.replace(" ", "").upper()
@@ -83,7 +83,9 @@ def __prepare(message, alphabet):
8383
return message, alphabet, character2Number, number2Character
8484

8585

86-
def encryptMessage(message, alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ.", period=5):
86+
def encryptMessage(
87+
message: str, alphabet: str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ.", period: int = 5
88+
) -> str:
8789
message, alphabet, character2Number, number2Character = __prepare(message, alphabet)
8890
encrypted, encrypted_numeric = "", ""
8991

@@ -96,7 +98,9 @@ def encryptMessage(message, alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ.", period=5):
9698
return encrypted
9799

98100

99-
def decryptMessage(message, alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ.", period=5):
101+
def decryptMessage(
102+
message: str, alphabet: str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ.", period: int = 5
103+
) -> str:
100104
message, alphabet, character2Number, number2Character = __prepare(message, alphabet)
101105
decrypted_numeric = []
102106
decrypted = ""

‎ciphers/transposition_cipher.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def main():
2222
print("Output:\n%s" % (text + "|"))
2323

2424

25-
def encryptMessage(key, message):
25+
def encryptMessage(key: int, message: str) -> str:
2626
"""
2727
>>> encryptMessage(6, 'Harshil Darji')
2828
'Hlia rDsahrij'
@@ -36,7 +36,7 @@ def encryptMessage(key, message):
3636
return "".join(cipherText)
3737

3838

39-
def decryptMessage(key, message):
39+
def decryptMessage(key: int, message: str) -> str:
4040
"""
4141
>>> decryptMessage(6, 'Hlia rDsahrij')
4242
'Harshil Darji'

‎ciphers/vigenere_cipher.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,23 @@ def main():
1717
print(translated)
1818

1919

20-
def encryptMessage(key, message):
20+
def encryptMessage(key: str, message: str) -> str:
2121
"""
2222
>>> encryptMessage('HDarji', 'This is Harshil Darji from Dharmaj.')
2323
'Akij ra Odrjqqs Gaisq muod Mphumrs.'
2424
"""
2525
return translateMessage(key, message, "encrypt")
2626

2727

28-
def decryptMessage(key, message):
28+
def decryptMessage(key: str, message: str) -> str:
2929
"""
3030
>>> decryptMessage('HDarji', 'Akij ra Odrjqqs Gaisq muod Mphumrs.')
3131
'This is Harshil Darji from Dharmaj.'
3232
"""
3333
return translateMessage(key, message, "decrypt")
3434

3535

36-
def translateMessage(key, message, mode):
36+
def translateMessage(key: str, message: str, mode: str) -> str:
3737
translated = []
3838
keyIndex = 0
3939
key = key.upper()

‎ciphers/xor_cipher.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020

2121
class XORCipher:
22-
def __init__(self, key=0):
22+
def __init__(self, key: int = 0):
2323
"""
2424
simple constructor that receives a key or uses
2525
default key = 0
@@ -28,7 +28,7 @@ def __init__(self, key=0):
2828
# private field
2929
self.__key = key
3030

31-
def encrypt(self, content, key):
31+
def encrypt(self, content: str, key: int) -> [str]:
3232
"""
3333
input: 'content' of type string and 'key' of type int
3434
output: encrypted string 'content' as a list of chars
@@ -53,7 +53,7 @@ def encrypt(self, content, key):
5353

5454
return ans
5555

56-
def decrypt(self, content, key):
56+
def decrypt(self, content: str, key: int) -> [str]:
5757
"""
5858
input: 'content' of type list and 'key' of type int
5959
output: decrypted string 'content' as a list of chars
@@ -78,7 +78,7 @@ def decrypt(self, content, key):
7878

7979
return ans
8080

81-
def encrypt_string(self, content, key=0):
81+
def encrypt_string(self, content: str, key: int = 0) -> str:
8282
"""
8383
input: 'content' of type string and 'key' of type int
8484
output: encrypted string 'content'
@@ -103,7 +103,7 @@ def encrypt_string(self, content, key=0):
103103

104104
return ans
105105

106-
def decrypt_string(self, content, key=0):
106+
def decrypt_string(self, content: str, key: int = 0) -> str:
107107
"""
108108
input: 'content' of type string and 'key' of type int
109109
output: decrypted string 'content'
@@ -128,7 +128,7 @@ def decrypt_string(self, content, key=0):
128128

129129
return ans
130130

131-
def encrypt_file(self, file, key=0):
131+
def encrypt_file(self, file: str, key: int = 0) -> bool:
132132
"""
133133
input: filename (str) and a key (int)
134134
output: returns true if encrypt process was
@@ -153,7 +153,7 @@ def encrypt_file(self, file, key=0):
153153

154154
return True
155155

156-
def decrypt_file(self, file, key):
156+
def decrypt_file(self, file: str, key: int) -> bool:
157157
"""
158158
input: filename (str) and a key (int)
159159
output: returns true if decrypt process was

0 commit comments

Comments
 (0)
Please sign in to comment.