Cryptography is the science that is used to hide the information. Mathematically defined as a tuple of five members (M, C, E, D, K) where,
M → Message (Plain Text)
C → Cipher Text
K → Set of Keys
E → Encryption Algorithm E: M*K → C
D → Decryption Algorithm D: C*K → M
On the other hand, cryptanalysis is the study of cipher systems with the view of finding the weaknesses in them that will enable us to retrieve the plain text.
Furthermore, ciphers can be classified into various types based on their properties. Well cipher in general is an algorithm to perform encryption and decryption. We could group Substitution and Transposition into Historical ciphers. Substitution cipher may further be monoalphabetic or polyalphabetic. Modern ciphers are either based on input data or based on key. Stream cipher and Block cipher are the types of modern cipher based on input data. Based on key there are symmetric(private) and asymmetric(public) ciphers.
Following are one of the implementations of ciphers I’ve learned so far. For complete package, follow this link to the repository.
#sample plain text : hello #sample key : axhjb def make_chunks(text, text_length, key_length): for i in range(0, text_length, key_length): yield text[i : i + key_length] def encryptdecrypt(cipher_generator): final_text = "" for item in cipher_generator: for i in range(0, len(item)): final_text += alphabets[alphabets.index(key[i]) ^ alphabets.index(item[i])] return final_text alphabets = "abcdefghijklmnopqrstuvwxyz" plain_text = raw_input("Enter the plain text: ") key = raw_input("Enter the key: ") plain_text = plain_text.replace(" ", "") p_generator = make_chunks(plain_text, len(plain_text), len(key)) cipher_text = encryptdecrypt(p_generator) print "The cipher text is : ", cipher_text c_generator = make_chunks(cipher_text, len(cipher_text), len(key)) decrypted_text = encryptdecrypt(c_generator) print "The decrypted text is : ", decrypted_text
Tell me how you felt the article was in the comments section below or shoot me a message at firstname.lastname@example.org . And there is always thanks for reading. Cheers ????