Tuesday, December 27, 2016

Catatan Mahasiswa Hampir Tua : Hasil Perjuangan Semester 7

yeah.. sekarang saya benar benar sudah menjadi mahasiswa semester tua, entah harus senang karena udah mendekati kelulusan ( apa kelulusan ?... thumbnail 1 summary
yeah.. sekarang saya benar benar sudah menjadi mahasiswa semester tua, entah harus senang karena udah mendekati kelulusan ( apa kelulusan ?? jangan mimpi!!, masih lama.. semester 8 aja masih ada mata kuliah yang harus di ambil, ahh kampret, (penyesalan mahasiswa tua)  ) atau harus sedih karena target pencapaian yang di tulis dibuku sebagian besar tidak tercapai :'((, tapi terlepas dari ini semua saya mengucapkan Alhamdulillah karena IPS (Indeks Prestasi Semester) saya lumayan memuaskan, ok ini saya kasih screenshotnya wkwk, *sombong


















*lho..lho.. IPKnya kok gak di cantumin?
wkwk.. kalo IPK itu rahasia negara, yang pasti udah di atas 3.16 dan ane lumayan puas kalo berkaca dengan IPK kawan2 seperjuangan wkwk(ya Allah saya khilaf),.
FYI, sebenarnya postingan ini sebelumnya pengen saya posting di blog saya satunya di http://johanw.id , tapi.. ya udah lah ya.. di sana postingan yang saya khsuskan untuk tulisan pribadi, banyak kata kasar, ngatain orang, kalimat bikin baper dll yg bukan untuk konsumsi publik (takut di baca anak anak, takut di bilang the next AwKarin wkwkw) itu alasan semua postingannya saya lock,
skip.. skip..

tidak banyak masalah sih yang di temukan di semester ini, mata kuliahnya juga kurang menantang :v , tapi ilmu yg di dapat lumayan banyak,
kalo di tanya mata kuliah apa yang paling menarik.. mungkin saya bakal jawab kriptografi, 
mengapa ?
saya lumayan dapat banyak ilmu fundamental kriptografi (A.K.A ilmu matahari dari kriptografi ) yang sangat berguna ketika saya main CTF wkwk, 

bahas apa lagi ya??
ya udah mungkin cukup segini aja dulu,
pertanyaan kapan saya lulus?
kenapa mata kuliah TA 1 disana masih warna abu abu?
kenapa saya masih betah single ??  
dll,.. itu rahasia negara, bye

Friday, December 16, 2016

Encryption RC4 (Rivest Code 4) in Python

Algoritma enkripsi RC4 (Rivest Code 4) adalah algoritma enkripsi simetrik, dimana kunci yang di gunakan sama untuk enkripsi dan dekripsi da... thumbnail 1 summary
Algoritma enkripsi RC4 (Rivest Code 4) adalah algoritma enkripsi simetrik, dimana kunci yang di gunakan sama untuk enkripsi dan dekripsi data. salah satu standart keamanan atau enkripsi komunikasi wireless yang menggunakan enkripsi ini ialah WEP (Wired Equivalent Privacy)
Code :
##!/usr/bin/env python
#Johan Wahyudi
def rc4(data, key,):
x = 0
box = range(256)
for i in range(256):
x = (x + box[i] + ord(key[i % len(key)])) % 256
box[i], box[x] = box[x], box[i]
x = y = 0
out = []
for char in data:
x = (x + 1) % 256
y = (y + box[x]) % 256
box[x], box[y] = box[y], box[x]
out.append(chr(ord(char) ^ box[(box[x] + box[y]) % 256]))
return ''.join(out)
def main():
print " RC4 Encryption"
data = raw_input("Input Message : ")
key = raw_input("Input Key : ")
encrypt = rc4(data,key)
print "Encrypt Message : " + encrypt
print "Decrypt Message : " + rc4(encrypt,key)
if __name__ == '__main__':
main()
view raw RC4.py hosted with ❤ by GitHub

Program :


Tuesday, November 1, 2016

Classic Cipher : Vernam Cipher in Python (Decrypt)

Vernam Cipher in Python (Encrypt) :  http://www.johanwahyudi.com/2016/11/classic-cipher-vernam-cipher-in-python.html Code : Output : ... thumbnail 1 summary
Vernam Cipher in Python (Encrypt) : http://www.johanwahyudi.com/2016/11/classic-cipher-vernam-cipher-in-python.html
Code :
#!/usr/bin/env python
import random
import string
from operator import xor
def vernam_dec(key):
#ciphertext diambil dari file karena waktu di copy manual hasil konversi sering berbeda
textcipher = open('ciphertext.txt','r').read()
#fungsi convert ke desimal text
convdecimal = []
for i in range(len(textcipher)):
convdecimal.append(str(ord(textcipher[i])))
decimal = ' '.join(convdecimal)
print decimal
#fungsi convert ke biner
convbiner = []
for i in range(len(convdecimal)):
convbiner.append(str(bin(int(convdecimal[i]))[2:].zfill(8)))
biner = ''.join(convbiner)
print "hasil konversi ke biner karakter Ciphertext : "
print ' '.join(convbiner)
#perintah convert key ke desimal
convkeydecimal = []
for i in range(len(key)):
convkeydecimal.append(str(ord(key[i])))
keydecimal = ' '.join(convkeydecimal)
#fungsi conver key ke biner
convkeybiner = []
for i in range(len(convkeydecimal)):
convkeybiner.append(str(bin(int(convkeydecimal[i]))))
binerkey = ''.join(convkeybiner)
print "Hasil Konversi ke biner karakter kunci :"
print ' '.join(convkeybiner)
#fungsi replace biner ciphertext
binercipher =biner.replace("b","")
print "biner Ciphertext : \n"+binercipher
#fungsi replace biner kunci
binerkey =binerkey.replace("b","")
print "biner kunci : \n"+binerkey
#fungsi xor variabel pesan dan key
ciphertext = []
for i in range(len(binercipher)):
ciphertext.append(xor(int(binercipher[i]),int(binerkey[i])))
cipherfix =''.join(map(str,ciphertext))
splits=[cipherfix[x:x+8] for x in range(0,len(cipherfix),8)]
print "Hasil XOR variabel ciphertext dan kunci : \n"+str(splits)
#fungsi convert ke hexa
hexa = []
for i in range(len(splits)):
hexa.append(hex(int(splits[i],2)))
print "Hasil KOnversi hasil XOR ke hexa : \n"+str(hexa)
#fungsi convert ke desimal
dec = []
for i in range(len(hexa)):
dec.append(int(hexa[i], 16))
print "Hasil Konversi ke Desimal : \n"+str(dec)
#fungsi convert ke ascii text
teks = []
for i in range(len(dec)):
teks.append(chr(dec[i]))
print "Gotcha!, Plaintext : "
return ''.join(teks)
def main():
print "Vernam Cipher Dekriptor (ciphertext dari file)"
key = raw_input("Masukkan key : ")
print vernam_dec(key)
if __name__ == '__main__':
main()

Output :
Encrypt :

Decrypt :


Classic Cipher : Vernam Cipher in Python (Encrypt)

       The Vernam Cipher is based on the principle that each  plaintext  character from a message is 'mixed' with one character fr... thumbnail 1 summary

       The Vernam Cipher is based on the principle that each plaintext character from a message is 'mixed' with one character from a key stream. If a truely random key stream is used, the result will be a truely 'random'ciphertext which bears no relation to the original plaintext (http://www.cryptomuseum.com/crypto/vernam.htm)

Code : 
#!/usr/bin/env python
import random
import string
from operator import xor
def vernam_enc(pesan):
#perintah random string
acak = ''.join([random.choice(string.ascii_letters) for i in xrange(len(pesan))])
print "Teks random sebagai kunci : "+acak
#fungsi convert ke desimal
convdecimal = []
for i in range(len(pesan)):
convdecimal.append(str(ord(pesan[i])))
decimal = ' '.join(convdecimal)
#fungsi convert ke biner
convbiner = []
for i in range(len(convdecimal)):
convbiner.append(str(bin(int(convdecimal[i]))[2:].zfill(8)))
biner = ''.join(convbiner)
print "hasil konversi ke biner karakter pesan : "
print ' '.join(convbiner)
#perintah convert key ke desimal
convkeydecimal = []
for i in range(len(acak)):
convkeydecimal.append(str(ord(acak[i])))
keydecimal = ' '.join(convkeydecimal)
#fungsi conver key ke biner
convkeybiner = []
for i in range(len(convkeydecimal)):
convkeybiner.append(str(bin(int(convkeydecimal[i]))))
binerkey = ''.join(convkeybiner)
print "Hasil KOnversi ke biner karakter kunci :"
print ' '.join(convkeybiner)
binerpesan =biner.replace("b","")
print "biner pesan : \n"+binerpesan
binerkey =binerkey.replace("b","")
print "key biner : \n"+binerkey
#fungsi xor variabel pesan dan key
ciphertext = []
for i in range(len(binerpesan)):
ciphertext.append(xor(int(binerpesan[i]),int(binerkey[i])))
cipherfix =''.join(map(str,ciphertext))
splits=[cipherfix[x:x+8] for x in range(0,len(cipherfix),8)]
print "Hasil XOR variabel pesan dan key : \n"+str(splits)
#fungsi convert ke hexa
hexa = []
for i in range(len(splits)):
hexa.append(hex(int(splits[i],2)))
print "Hasil KOnversi hasil XOR ke hexa : \n"+str(hexa)
#fungsi convert ke desimal
dec = []
for i in range(len(hexa)):
dec.append(int(hexa[i], 16))
print "Hasil Konversi ke Desimal : \n"+str(dec)
#fungsi convert ke ascii text
teks = []
for i in range(len(dec)):
teks.append(chr(dec[i]))
save2file = ''.join(teks)
print "Ciphertext : \n"+''.join(teks)
#ciphertext di simpan ke file, supaya memudahkan pada waktu dekripsi,
#karena pada waktu ciphertext di copas hasil conversi ke binernya beda
outfile = open('ciphertext.txt','w')
outfile.write(save2file)
print "Ciphertext di simpan di ciphertext.txt"
return save2file
def main():
print "Vernam Cipher"
pesan = raw_input("Masukkan Pesan : ")
print vernam_enc(pesan)
if __name__ == '__main__':
main()

Output :

Wednesday, October 26, 2016

Converter Character ASCII Using Python

Code :  Output Program : thumbnail 1 summary
Code : 
#!/usr/bin/env python
#Johan Wahyudi
#Python
def converter(pilihan, character):
if pilihan == "1":
convert = []
for i in range(len(character)):
convert.append(str(ord(character[i])))
decimal = ' '.join(convert)
print "Hasil konversi ke Decimal : "+decimal
biner = []
for i in range(len(convert)):
biner.append(str(bin(int(convert[i]))))
binary = ' '.join(biner)
print "Hasil konversi ke Biner : "+binary
elif pilihan == "2":
ascii = []
l = character.split(' ')
for i in range(len(l)):
ascii.append(chr(int(l[i])))
data_ascii = ''.join(ascii)
print "Hasil Konversi ke Character Ascii :"+data_ascii
binn = []
for i in range(len(l)):
binn.append(bin(int(l[i])))
binner = ' '.join(binn)
print "Hasil konversi ke Biner : "+binner
elif pilihan == "3":
pisah = character.split(' ')
dec = []
for i in range(len(pisah)):
dec.append(str(int(pisah[i], 2)))
desimal =' '.join(dec)
print ("hasil konversi ke Decimal : ")+desimal
ascii_pecah = desimal.split(' ')
char_ascii = []
for i in range(len(ascii_pecah)):
char_ascii.append(chr(int(ascii_pecah[i])))
ascii_fix = ''.join(char_ascii)
print "Hasil konversi ke character Ascii : "+str(ascii_fix)
return exit()
def main():
print "Masukan Format Karakter yang akan di convert"
print " 1. Char Ascii\n 2. Decimal\n 3. Biner"
pilihan = raw_input("Input Option : ")
character = raw_input("Input Character :")
print converter(pilihan, character)
if __name__ == '__main__':
main()
Output Program :


Sunday, October 9, 2016

Classic Cipher : Caesar Cipher Encrypt & Decrypt

Hasil Program dengan menggunakan huruf kecil (lowercase): Hasil Program dengan menggunakan huruf besar (uppercase): Rum... thumbnail 1 summary
#!/usr/bin/env python
#Johan Wahyudi
from string import lowercase, uppercase
def caesar_en(text, key):
result = []
for c in text:
if c in lowercase:
enkripsi = lowercase.index(c)
enkripsi = (enkripsi + key) % 26
result.append(lowercase[enkripsi])
elif c in uppercase:
enkripsi = uppercase.index(c)
enkripsi = (enkripsi + key) % 26
result.append(uppercase[enkripsi])
else:
result.append(c)
return "".join(result)
def caesar_dec(ciphertext, key_dec):
hasil = []
for d in ciphertext:
if d in lowercase:
dekripsi = lowercase.index(d)
dekripsi = (dekripsi - key_dec) % 26
hasil.append(lowercase[dekripsi])
elif d in uppercase:
dekripsi = uppercase.index(d)
dekripsi = (dekripsi - key_dec) % 26
hasil.append(uppercase[dekripsi])
else:
result.append(d)
return "".join(hasil)
def main():
text = raw_input("masukkan text :" )
key = input ("masukkan key :")
print caesar_en(text, key)
print '\nEncrypting \"' + text + '\" dengan ROT' + str(key) + " => " + caesar_en(text, key) + '\n'
ciphertext = raw_input("masukkan ciphertext :" )
key_dec = input("masukkan key :" )
print caesar_dec(ciphertext, key_dec)
print '\nDecrypting \"' + ciphertext + '\" dengan ROT' + str(key_dec) + " => " + caesar_dec(ciphertext, key_dec) + '\n'
if __name__ == '__main__':
main()
Hasil Program dengan menggunakan huruf kecil (lowercase):


Hasil Program dengan menggunakan huruf besar (uppercase):


Rumus Dasar Program :
Rumus Enkripsi :

Rumus Dekripsi :


Ket :
C = Ciphertext , Pesan yang telah di enkripsi
P = PlainText, Pesan asli
K = Key, Kunci sandi
Mod = Modulo

Tabel Nilai huruf caesar cipher :


Penjelasan Program :

di python untuk membuat sebuah function di gunakan keyword def kemudian di ikuti nama functionnya, untuk membuat fungsi enkripsi caesar cipher disini saya menggunakan function caesar_en dengan parameter text dan key. Pada fungsi di atas isi dari parameter text di ubah menjadi array berdasarkan index(c).

Penjelasan Fungsi Mod 26 :

Hasil penjumlahakn dari index(c) dan key di mod (modulo) 26, yang artinya adalah sisa dari hasil bagi, kenapa di mod 26 ? Karena jumlah huruf dalam alfabet yang di gunakan dalam program ini berjumlah 26 huruf, apabila hasil penjumlahan dari index(c) dan key kurang dari 26, maka hasilnya adalah tetap, sedangkan apabila hasil penjumlahan dari index(c) dan key melebihi 26 maka hasil akhir yang di dapat adalah sisa dari 26, kita lihat contoh di bawah ini :

Hasil penjumlahan index(c) dan key kurang dari 26 :


Hasil Penjumlahan index(c) dan key lebih dari 26 :



Tabel Pembuktian (Enkripsi) :


Tabel Pembuktian (Dekripsi) :


untuk penjelasan apa itu Caesar Cipher silahkan cari di wikipedia aja hehe.. capek ane dari ane sekolah sampe kuliah masih aja bahas enkripsi jadul ini -,- .
terima kasih semoga bermanfaat :D