Menerapkan Vignere Cipher
Dalam bab ini, mari kita pahami bagaimana mengimplementasikan sandi Vignere. Pertimbangkan teksnyaThis is basic implementation of Vignere Cipher akan disandikan dan kunci yang digunakan adalah PIZZA.
Kode
Anda dapat menggunakan kode berikut untuk mengimplementasikan sandi Vignere dengan Python -
import pyperclip
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
def main():
myMessage = "This is basic implementation of Vignere Cipher"
myKey = 'PIZZA'
myMode = 'encrypt'
if myMode == 'encrypt':
translated = encryptMessage(myKey, myMessage)
elif myMode == 'decrypt':
translated = decryptMessage(myKey, myMessage)
print('%sed message:' % (myMode.title()))
print(translated)
print()
def encryptMessage(key, message):
return translateMessage(key, message, 'encrypt')
def decryptMessage(key, message):
return translateMessage(key, message, 'decrypt')
def translateMessage(key, message, mode):
translated = [] # stores the encrypted/decrypted message string
keyIndex = 0
key = key.upper()
for symbol in message:
num = LETTERS.find(symbol.upper())
if num != -1:
if mode == 'encrypt':
num += LETTERS.find(key[keyIndex])
elif mode == 'decrypt':
num -= LETTERS.find(key[keyIndex])
num %= len(LETTERS)
if symbol.isupper():
translated.append(LETTERS[num])
elif symbol.islower():
translated.append(LETTERS[num].lower())
keyIndex += 1
if keyIndex == len(key):
keyIndex = 0
else:
translated.append(symbol)
return ''.join(translated)
if __name__ == '__main__':
main()
Keluaran
Anda dapat mengamati keluaran berikut ketika Anda menerapkan kode yang diberikan di atas -
Kombinasi yang mungkin untuk meretas sandi Vignere hampir mustahil. Oleh karena itu, ini dianggap sebagai mode enkripsi aman.