Skip to content

Commit bae3af2

Browse files
add: vigenere cipher
Good cipher algorithm named vigenere implemented in Python Programming Language.
1 parent a73c3f1 commit bae3af2

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

Diff for: vigenere_cipher.py

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
text = "mrttaqrhknsw ih puggrur"
2+
custom_key = "happycoding"
3+
4+
5+
def vigenere(message, key, direction=1):
6+
key_index = 0
7+
alphabet = "abcdefghijklmnopqrstuvwxyz"
8+
final_message = ""
9+
10+
for char in message.lower():
11+
# Append any non-letter character to the message
12+
if not char.isalpha():
13+
final_message += char
14+
else:
15+
# Find the right key character to encode/decode
16+
key_char = key[key_index % len(key)]
17+
key_index += 1
18+
19+
# Define the offset and the encrypted/decrypted letter
20+
offset = alphabet.index(key_char)
21+
index = alphabet.find(char)
22+
new_index = (index + offset * direction) % len(alphabet)
23+
final_message += alphabet[new_index]
24+
25+
return final_message
26+
27+
28+
def encrypt(message, key):
29+
return vigenere(message, key)
30+
31+
32+
def decrypt(message, key):
33+
return vigenere(message, key, -1)
34+
35+
36+
print(f"\nEncrypted text: {text}")
37+
print(f"Key: {custom_key}")
38+
decryption = decrypt(text, custom_key)
39+
print(f"\nDecrypted text: {decryption}\n")

0 commit comments

Comments
 (0)