Last active
July 14, 2020 06:07
-
-
Save ardamavi/3f9d4bf818978e1a246a649a350d3265 to your computer and use it in GitHub Desktop.
Message Encoder and Decoder
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Encrypted Message Decoder | |
# Arda Mavi | |
def decode(encrypted_binary_message, key): | |
# Key to binary: | |
binary_key = " ".join('{0:08b}'.format(ord(one_char), 'b') for one_char in key) + " " | |
# Decode encrypted message with using key and XOR gate: | |
# Get repeated binary key: | |
repeated_binary_key = (binary_key * (int(len(encrypted_binary_message)/len(binary_key))+1))[:len(encrypted_binary_message)] | |
decoded_binary_mes = "" | |
for i, one_bit in enumerate(encrypted_binary_message): | |
if one_bit != repeated_binary_key[i]: | |
decoded_binary_mes += "1" | |
elif one_bit == " ": | |
decoded_binary_mes += " " | |
else: | |
decoded_binary_mes += "0" | |
# Decoded binary message to message: | |
decoded_mes = "".join(chr(int(one_char, 2)) for one_char in decoded_binary_mes.split(" ")) | |
return decoded_mes | |
def main(): | |
encrypted_mes = "" # Binary Message | |
key = "" # Text | |
print("\n\nDecoded Message:\n", decode(encrypted_mes, key), "\n\n") | |
if __name__ == "__main__": | |
main() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Message Encoder | |
# Arda Mavi | |
def encoder(message, key): | |
# Get binary message: | |
b_message = " ".join('{0:08b}'.format(ord(one_char), 'b') for one_char in message) | |
# Get binary key: | |
b_key = " ".join('{0:08b}'.format(ord(one_char), 'b') for one_char in key) + " " | |
# Get repeated binary key: | |
b_rep_key = (b_key * (int(len(b_message)/len(b_key))+1))[:len(b_message)] | |
# Split chars: | |
m_split = b_message.split(" ") | |
k_split = b_rep_key.split(" ") | |
# XOR Gate: | |
em = "" | |
for i, j in enumerate(m_split): | |
for k, l in enumerate(j): | |
if l != k_split[i][k]: | |
em += "1" | |
else: | |
em += "0" | |
em += " " | |
return em | |
def main(): | |
message = "" # Text | |
key = "" # Text | |
print("\nMessage:\n", message, "\n\nKey:\n", key, "\n\nEncrypted Binary Message:\n", encoder(message, key), "\n") | |
if __name__ == "__main__": | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment