Exploring String Data Types, Methods, and Cryptography Algorithms in Python

python programming in context n.w
1 / 29
Embed
Share

Delve into the world of string data types, methods, and cryptographic algorithms in Python with this comprehensive chapter. Learn about string manipulation, operators, encryption, decryption, and transposition ciphers. Explore how to convert between characters and numbers, use various string methods, and implement simple cryptographic techniques. Discover Listing 3.1 and Listing 3.2 to see practical examples of working with strings and encryption. Dive deep into the fascinating realm of Python programming and enhance your skills in data manipulation and security.

  • Python Programming
  • String Data Types
  • Cryptography
  • Encryption
  • Transposition Ciphers

Uploaded on | 2 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. Python Programming in Context Chapter 3

  2. Objectives To introduce the string data type To demonstrate the use of string methods and operators To introduce simple cryptographic algorithms

  3. String A sequence of characters Quote delimited single double triple

  4. Figure 3.1

  5. Operators Concatenation + Repetition * Indexing [ ] Slicing [ : ]

  6. String Methods upper lower center count index find replace

  7. Character Functions ord char Convert between characters and numbers

  8. Listing 3.1 def letterToIndex(ch): alphabet = "abcdefghijklmnopqrstuvwxyz " idx = alphabet.find(ch) if idx < 0: print ("error: letter not in the alphabet", ch) return idx def indexToLetter(idx): alphabet = "abcdefghijklmnopqrstuvwxyz " if idx > 25: print ('error: ', idx, ' is too large') letter = '' elif idx < 0: print ('error: ', idx, ' is less than 0') letter = '' else: letter = alphabet[idx] return letter

  9. Cryptography Encoding and Decoding Messages Ciphertext Plaintext Encryption Decryption

  10. Figure 3.2

  11. Transposition Cipher Rail Fence Even Odd Shuffle

  12. Figure 3.3

  13. Listing 3.2 def scramble2Encrypt(plainText): evenChars = "" oddChars = "" charCount = 0 for ch in plainText: if charCount % 2 == 0: evenChars = evenChars + ch else: oddChars = oddChars + ch charCount = charCount + 1 cipherText = oddChars + evenChars return cipherText

  14. Figure 3.4

  15. Listing 3.3 def scramble2Decrypt(cipherText): halfLength = len(cipherText) // 2 oddChars = cipherText[:halfLength] evenChars = cipherText[halfLength:] plainText = "" for i in range(halfLength): plainText = plainText + evenChars[i] plainText = plainText + oddChars[i] if len(oddChars) < len(evenChars): plainText = plainText + evenChars[-1] return plainText

  16. Listing 3.4 def encryptMessage(): msg = input('Enter a message to encrypt: ') cipherText = scramble2Encrypt(msg) print('The encrypted message is: ', cipherText)

  17. Substitution Cipher Requires a key Substitute one letter for another throughout the entire message

  18. Figure 3.5

  19. Figure 3.6

  20. Listing 3.5 def substitutionEncrypt(plainText,key): alphabet = "abcdefghijklmnopqrstuvwxyz " plainText = plainText.lower() cipherText = "" for ch in plainText: idx = alphabet.find(ch) cipherText = cipherText + key[idx] return cipherText

  21. Creating a Key Random reordering of the alphabet Base key on short word or phrase

  22. Listing 3.6 def removeChar(string,idx): return string[:idx] + string[idx+1:]

  23. Listing 3.7 def keyGen(): alphabet = "abcdefghijklmnopqrstuvwxyz" key = "" for i in range(len(alphabet)): ch = random.randint(0,25-i) key = key + alphabet[ch] alphabet = removeChar(alphabet,ch) return key

  24. Listing 3.8 def removeDupes(myString): newStr = "" for ch in myString: if ch not in newStr: newStr = newStr + ch return newStr

  25. Listing 3.9 def removeMatches(myString,removeString): newStr = "" for ch in myString: if ch not in removeString: newStr = newStr + ch return newStr

  26. Listing 3.10 def genKeyFromPass(password): key = 'abcdefghijklmnopqrstuvwxyz' password = removeDupes(password) lastChar = password[-1] lastIdx = key.find(lastChar) afterString = removeMatches(key[lastIdx+1:],password) beforeString = removeMatches(key[:lastIdx],password) key = password + afterString + beforeString return key

  27. Vignere Cipher Use a different key for each letter Vignere Square Use a special key for shift

  28. Listing 3.11 def vignereIndex(keyLetter,plainTextLetter): keyIndex = letterToIndex(keyLetter) ptIndex = letterToIndex(plainTextLetter) newIdx = (ptIndex + keyIndex) % 26 return indexToLetter(newIdx)

  29. Listing 3.12 def encryptVignere(key,plainText): cipherText = "" keyLen = len(key) charNum = 0 for i in range(len(plainText)): ch = plainText[i] if ch == ' ': cipherText = cipherText + ch else: cipherText = cipherText + vignereIndex(key[i%keyLen],ch) return cipherText

Related


More Related Content