Seiring dengan perkembangan ilmu pengetahuan dan teknologi, saat ini tidak sedikit penyedia jasa yang menawarkan layanan kursus programming. Namun bagi yang ingin belajar sendiri, telah banyak tutorial belajar pemrograman (programming) di internet, salah satunya dalam artikel ini.
Tutorial Belajar Pemrograman Python
Salah satu cara yang digunakan oleh seorang cryptanalyst atau code breaker untuk dapat membaca suatu ciphertext ialah dengan cara melakukan dugaan key yang digunakan. Mencoba menduga suatu key, mencoba melakukan decryption dengan key tersebut, dan selanjutnya melakukan analisis output yang dihasilkan. Bila output tersebut tidak sesuai, masih berupa pesan yang tidak dapat dipahami manusia, proses menduga key akan diulang terus-menerus, hingga diperoleh pesan yang dapat dipahami.
Suatu cara dengan mencoba semua kemungkinan yang ada untuk melakukan memecahkan suatu pesan rahasia disebut dengan istilah brute-force attack.
Setelah sebelumnya dibahas mengenai melakukan encryption dan decryption Caesar Cipher dengan Python, berikut ini ialah contoh sederhana source code Python 3 untuk melakukan brute-force attack dalam upaya memecahkan suatu pesan rahasia Caesar Cipher.
#Source code Brute-Force Attack Caesar Cipher sederhana dengan Python
#Loki Lang
ciphertext = input("Masukkan ciphertext ").upper()
letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for key in range(len(letters)):
plaintext = ''
for symbol in ciphertext:
if symbol in letters:
num = letters.find(symbol)
num = num - key
if num < 0:
num += len(letters)
plaintext = plaintext + letters[num]
else:
plaintext = plaintext + symbol
print("Key #%s, plaintext: %s" %(key, plaintext))
#Loki Lang
ciphertext = input("Masukkan ciphertext ").upper()
letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for key in range(len(letters)):
plaintext = ''
for symbol in ciphertext:
if symbol in letters:
num = letters.find(symbol)
num = num - key
if num < 0:
num += len(letters)
plaintext = plaintext + letters[num]
else:
plaintext = plaintext + symbol
print("Key #%s, plaintext: %s" %(key, plaintext))
Berikut ini ialah contoh hasil pengujian brute-force attack untuk memecahkan Caesar Cipher.
Masukkan ciphertext THUJOLZALY BUPALK MVVAIHSS JSBI
Key #0, plaintext: THUJOLZALY BUPALK MVVAIHSS JSBI
Key #1, plaintext: SGTINKYZKX ATOZKJ LUUZHGRR IRAH
Key #2, plaintext: RFSHMJXYJW ZSNYJI KTTYGFQQ HQZG
Key #3, plaintext: QERGLIWXIV YRMXIH JSSXFEPP GPYF
Key #4, plaintext: PDQFKHVWHU XQLWHG IRRWEDOO FOXE
Key #5, plaintext: OCPEJGUVGT WPKVGF HQQVDCNN ENWD
Key #6, plaintext: NBODIFTUFS VOJUFE GPPUCBMM DMVC
Key #7, plaintext: MANCHESTER UNITED FOOTBALL CLUB
Key #8, plaintext: LZMBGDRSDQ TMHSDC ENNSAZKK BKTA
Key #9, plaintext: KYLAFCQRCP SLGRCB DMMRZYJJ AJSZ
Key #10, plaintext: JXKZEBPQBO RKFQBA CLLQYXII ZIRY
Key #11, plaintext: IWJYDAOPAN QJEPAZ BKKPXWHH YHQX
Key #12, plaintext: HVIXCZNOZM PIDOZY AJJOWVGG XGPW
Key #13, plaintext: GUHWBYMNYL OHCNYX ZIINVUFF WFOV
Key #14, plaintext: FTGVAXLMXK NGBMXW YHHMUTEE VENU
Key #15, plaintext: ESFUZWKLWJ MFALWV XGGLTSDD UDMT
Key #16, plaintext: DRETYVJKVI LEZKVU WFFKSRCC TCLS
Key #17, plaintext: CQDSXUIJUH KDYJUT VEEJRQBB SBKR
Key #18, plaintext: BPCRWTHITG JCXITS UDDIQPAA RAJQ
Key #19, plaintext: AOBQVSGHSF IBWHSR TCCHPOZZ QZIP
Key #20, plaintext: ZNAPURFGRE HAVGRQ SBBGONYY PYHO
Key #21, plaintext: YMZOTQEFQD GZUFQP RAAFNMXX OXGN
Key #22, plaintext: XLYNSPDEPC FYTEPO QZZEMLWW NWFM
Key #23, plaintext: WKXMROCDOB EXSDON PYYDLKVV MVEL
Key #24, plaintext: VJWLQNBCNA DWRCNM OXXCKJUU LUDK
Key #25, plaintext: UIVKPMABMZ CVQBML NWWBJITT KTCJ
Key #0, plaintext: THUJOLZALY BUPALK MVVAIHSS JSBI
Key #1, plaintext: SGTINKYZKX ATOZKJ LUUZHGRR IRAH
Key #2, plaintext: RFSHMJXYJW ZSNYJI KTTYGFQQ HQZG
Key #3, plaintext: QERGLIWXIV YRMXIH JSSXFEPP GPYF
Key #4, plaintext: PDQFKHVWHU XQLWHG IRRWEDOO FOXE
Key #5, plaintext: OCPEJGUVGT WPKVGF HQQVDCNN ENWD
Key #6, plaintext: NBODIFTUFS VOJUFE GPPUCBMM DMVC
Key #7, plaintext: MANCHESTER UNITED FOOTBALL CLUB
Key #8, plaintext: LZMBGDRSDQ TMHSDC ENNSAZKK BKTA
Key #9, plaintext: KYLAFCQRCP SLGRCB DMMRZYJJ AJSZ
Key #10, plaintext: JXKZEBPQBO RKFQBA CLLQYXII ZIRY
Key #11, plaintext: IWJYDAOPAN QJEPAZ BKKPXWHH YHQX
Key #12, plaintext: HVIXCZNOZM PIDOZY AJJOWVGG XGPW
Key #13, plaintext: GUHWBYMNYL OHCNYX ZIINVUFF WFOV
Key #14, plaintext: FTGVAXLMXK NGBMXW YHHMUTEE VENU
Key #15, plaintext: ESFUZWKLWJ MFALWV XGGLTSDD UDMT
Key #16, plaintext: DRETYVJKVI LEZKVU WFFKSRCC TCLS
Key #17, plaintext: CQDSXUIJUH KDYJUT VEEJRQBB SBKR
Key #18, plaintext: BPCRWTHITG JCXITS UDDIQPAA RAJQ
Key #19, plaintext: AOBQVSGHSF IBWHSR TCCHPOZZ QZIP
Key #20, plaintext: ZNAPURFGRE HAVGRQ SBBGONYY PYHO
Key #21, plaintext: YMZOTQEFQD GZUFQP RAAFNMXX OXGN
Key #22, plaintext: XLYNSPDEPC FYTEPO QZZEMLWW NWFM
Key #23, plaintext: WKXMROCDOB EXSDON PYYDLKVV MVEL
Key #24, plaintext: VJWLQNBCNA DWRCNM OXXCKJUU LUDK
Key #25, plaintext: UIVKPMABMZ CVQBML NWWBJITT KTCJ
Bila ada sesuatu yang belum jelas dan ingin tahu lebih dalam seputar project Arduino, pemrograman, dan elektronika, bisa bertanya pada bagian comment.