07-Jan-2022 23:11:21 monoalphabetic_test(): MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 Test monoalphabetic() MONO_ENCRYPT encrypts a plain text using a monoalphabetic substitution cipher. MONO_DECRYPT decrypts an encryted text. Here we use a "typewriter code" to encrypt the message. ABC: "ABCDEFGHIJKLMNOPQRSTUVWXYZ" CODE: "QWERTYUIOPASDFGHJKLZXCVBNM" PLAIN: "A man, a plan, a canal - Panama!" CRYPT: "Q DQF, Q HSQF, Q EQFQS - HQFQDQ!" DECRYPT: "A MAN, A PLAN, A CANAL - PANAMA!" We can use symbols in the code, but if the plaintext and code both use punctuation, we will have some mistakes. ABC: "ABCDEFGHIJKLMNOPQRSTUVWXYZ" CODE: "~`!@#$%^&*()-_=+[{]};:,<.>" PLAIN: "A man, a plan, a canal - Panama!" CRYPT: "~ -~_, ~ +)~_, ~ !~_~) - +~_~-~!" DECRYPT: "A MANW A PLANW A CANAL M PANAMAC" If we use a "symmetric" code, then encrypting twice actually decodes the message. ABC: "ABCDEFGHIJKLMNOPQRSTUVWXYZ" CODE: "ZYXWVUTSRQPONMLKJIHGFEDCBA" PLAIN: "A man, a plan, a canal - Panama!" CRYPT: "Z NZM, Z KOZM, Z XZMZO - KZMZNZ!" CRYPT2: "A MAN, A PLAN, A CANAL - PANAMA!" Another ATBASH example. ABC: "ABCDEFGHIJKLMNOPQRSTUVWXYZ" CODE: "ZYXWVUTSRQPONMLKJIHGFEDCBA" PLAIN: "There are a thousand hacking at the branches of evil for every one who is striking at its root." CRYPT: "GSVIV ZIV Z GSLFHZMW SZXPRMT ZG GSV YIZMXSVH LU VERO ULI VEVIB LMV DSL RH HGIRPRMT ZG RGH ILLG." CRYPT2: "THERE ARE A THOUSAND HACKING AT THE BRANCHES OF EVIL FOR EVERY ONE WHO IS STRIKING AT ITS ROOT." monoalphabetic_test(: Normal end of execution. 07-Jan-2022 23:11:21