Skip to content

Instantly share code, notes, and snippets.

@ardamavi
Last active July 14, 2020 06:07
Show Gist options
  • Save ardamavi/3f9d4bf818978e1a246a649a350d3265 to your computer and use it in GitHub Desktop.
Save ardamavi/3f9d4bf818978e1a246a649a350d3265 to your computer and use it in GitHub Desktop.
Message Encoder and Decoder
# 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()
# 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