ALGORITMA KRIPTOGRAFI Data Encryption Standard (DES)
Keamanan sistem komputer merupakan sebuah upaya yang dilakukan untuk mengamankan kinerja,fungsi atau proses komputer. sistem keamanan komputer juga berguna untuk menjaga komputer dari para hacker (penjahat dunia maya).
Pada studi kasus keamanan komputer di bidang pemerintahan yaitu peretasan situs KPU yang merubah situs tersebut dengan mengganti nama- nama partai politik menjadi nama-nama aneh. Tindakan tersebut merupakan tindakan tidak baik yang menimbulkan permasalahan pada sistem pemerintahan dan kerusakan sistem pada pemeritahan. Salah satu cara menanggulangi kasus tersebut adalah dengan teknik kriptografi/algoritma kriptografi yaitu seni menyandikan data. Data yang dikirimkan disandikan terlebih dahulu sebelum dikirim melalui internet. Di komputer tujuan, data dikembalikan ke bentuk aslinya sehingga dapat dibaca dan dimengerti oleh penerima. Hal ini dilakukan supaya pihak-pihak penyerang tidak dapat mengerti isi data yang dikirim. Lebih tepatnya dengan algoritma Kriptografi Data Encryption Standard/DES (Kriptografi Modern Algoritma Simetris).
Algoritma DES dikembangkan di IBM dibawah
kepemimpinan W.L. Tuchman pada tahun 1972. Algoritma
ini didasarkan pada algoritma Lucifer yang dibuat oleh Horst
Feistel.
· Algoritma ini telah disetujui oleh National Bureau of
Standard (NBS) setelah penilaian kekuatannya oleh National
Security Agency (NSA) Amerika Serikat.
1
DES termasuk ke dalam sistem kriptografi simetri dan
tergolong jenis cipher blok. DES beroperasi pada ukuran blok 64 bit. DES
mengenkripsikan 64 bit plainteks menjadi 64 bit cipherteks
dengan menggunakan 56 bit kunci internal (internal key) atau
upa-kunci (subkey). Kunci internal dibangkitkan dari kunci
eksternal (external key) yang panjangnya 64 bit.
· Skema global dari algoritma DES adalah sebagai berikut
(lihat Gambar 12.1):
1. Blok plainteks dipermutasi dengan matriks permutasi awal
(initial permutation atau IP).
2. Hasil permutasi awal kemudian di-enciphering- sebanyak
16 kali (16 putaran). Setiap putaran menggunakan kunci
internal yang berbeda.
3. Hasil enciphering kemudian dipermutasi dengan matriks
permutasi balikan (invers initial permutation atau IP-1
)
menjadi blok cipherteks.
Skema Global Algoritma DES
Di dalam proses enciphering, blok plainteks terbagi menjadi
dua bagian, kiri (L) dan kanan (R), yang masing-masing
panjangnya 32 bit. Kedua bagian ini masuk ke dalam 16
putaran DES.
· Pada setiap putaran i, blok R merupakan masukan untuk
fungsi transformasi yang disebut f. Pada fungsi f, blok R
dikombinasikan dengan kunci internal Ki
. Keluaran dai
fungsi f di-XOR-kan dengan blok L untuk mendapatkan blok
R yang baru. Sedangkan blok L yang baru langsung diambil
dari blok R sebelumnya. Ini adalah satu putaran DES.
·
Secara matematis, satu putaran DES dinyatakan sebagai
Li = Ri – 1
Ri
= Li – 1 Å f(Ri – 1, Ki)
TAHAPAN PROSES ENKRIPSI
Permutasi Awal
·
Sebelum putaran pertama, terhadap blok plainteks dilakukan
permutasi awal (initial permutation atau IP). Tujuan
permutasi awal adalah mengacak plainteks sehingga urutan
bit-bit di dalamnya berubah. Pengacakan dilakukan dengan
menggunakan matriks permutasi awal berikut ini:
Cara membaca tabel/matriks: dua entry ujung kiri atas (58 dan 50)
berarti: “pindahkan bit ke-58 ke posisi bit 1”
“pindahkan bit ke-50 ke posisi bit 2”, dst.
Pembangkitan Kunci Internal
Karena ada 16 putaran, maka dibutuhkan kunci internal
sebanyak 16 buah, yaitu K1, K2, …, K16. Kunci-kunci internal
ini dapat dibangkitkan sebelum proses enkripsi atau
bersamaan dengan proses enkripsi.
· Kunci internal dibangkitkan dari kunci eksternal yang
diberikan oleh pengguna. Kunci eksternal panjangnya 64 bit
atau 8 karakter.
· Misalkan kunci eksternal yang tersusun dari 64 bit adalah K.
Kunci eksternal ini menjadi masukan untuk permutasi
dengan menggunakan matriks permutasi kompresi PC-1
sebagai berikut:
Dalam permutasi ini, tiap bit kedelapan (parity bit) dari
delapan byte kunci diabaikan. Hasil permutasinya adalah
sepanjang 56 bit, sehingga dapat dikatakan panjang kunci
DES adalah 56 bit.
Selanjutnya, 56 bit ini dibagi menjadi 2 bagian, kiri dan
kanan, yang masing-masing panjangnya 28 bit, yang masingmasing disimpan di dalam C0 dan D0:
C0: berisi bit-bit dari K pada posisi :
57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18
10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36
D0: berisi bit-bit dari K pada posisi :
63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22
14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4
Selanjutnya, kedua bagian digeser ke kiri (left shift)
sepanjang satu atau dua bit bergantung pada tiap putaran.
Operasi pergeseran bersifat wrapping atau round-shift.
Jumlah pergeseran pada setiap putaran ditunjukkan pada
Tabel 1 sbb:
Misalkan (Ci
, Di) menyatakan penggabungan Ci
dan Di
. (Ci+1,
Di+1) diperoleh dengan menggeser Ci
dan Di
satu atau dua bit.
Setelah pergeseran bit, (Ci
, Di) mengalami permutasi
kompresi dengan menggunakan matriks PC-2 berikut:
Setiap putaran enciphering merupakan jaringan Feistel yang secara matematis dinyatakan sebagai
14
|
17
|
11
|
24
|
1
|
5
|
3
|
28
|
15
|
6
|
21
|
10
|
23
|
19
|
12
|
4
|
26
|
8
|
16
|
7
|
27
|
20
|
13
|
2
|
41
|
52
|
31
|
37
|
47
|
55
|
30
|
40
|
51
|
45
|
33
|
48
|
44
|
49
|
39
|
56
|
34
|
53
|
46
|
42
|
50
|
36
|
29
|
32
|
Dengan permutasi ini, kunci internal Ki diturunkan dari (Ci, Di) yang dalam hal ini Ki merupakan penggabungan bit-bit Ci pada posisi:
14, 17,
|
11,
|
24,
|
1,
|
5,
|
3,
|
28,
|
15,
|
6,
|
21, 10
|
|
23, 19,
|
12,
|
4, 26,
|
8, 16,
|
7,
|
27,
|
20,
|
13,
|
2
|
dengan
bit-bit Di pada posisi:
41, 52,
31, 37, 47, 55, 30, 40, 51, 45, 33, 48
44, 49,
39, 56, 34, 53, 46, 42, 50, 36, 29, 32
Jadi,
setiap kunci internal Ki
mempunyai panjang 48 bit.
Bila jumlah pergeseran bit-bit
pada Tabel 1 dijumlahkan semuanya, maka jumlah seluruhnya sama dengan 28, yang
sama dengan jumlah bit pada Ci dan Di. Karena itu, setelah putaran ke-16 akan didapatkan kembali C16 = C0 dan D16 = D0.
Proses Enciphering
Proses enciphering terhadap blok plainteks dilakukan sete lah permutasi
awal. Setiap blok plainteks mengalami 16 kali putaran enciphering.
Diagram komputasi fungsi f diperlihatkan pada gambar di bawah ini :
Setiap putaran enciphering merupakan jaringan Feistel yang secara matematis dinyatakan sebagai
Li = Ri – 1
Ri = Li – 1 Å f(Ri – 1, Ki)
E adalah fungsi ekspansi yang
memperluas blok Ri – 1 yang
| |||||||||||||||
panjangnya 32-bit menjadi blok 48 bit. Fungsi ekspansi
| |||||||||||||||
direalisasikan dengan matriks permutasi ekspansi
|
sbb:
| ||||||||||||||
32
|
1
|
2
|
3
|
4
|
5
|
4
|
5
|
6
|
7
|
8
|
9
| ||||
8
|
9
|
10
|
11
|
12
|
13
|
12
|
13
|
14
|
15
|
16
|
17
| ||||
16
|
17
|
18
|
19
|
20
|
21
|
20
|
21
|
22
|
23
|
24
|
25
| ||||
24
|
25
|
26
|
27
|
28
|
29
|
28
|
29
|
30
|
31
|
32
|
1
| ||||
·
|
Selanjutnya, hasil ekpansi, yaitu E(Ri – 1), yang panjangnya 48
| ||||||||||||||
bit di-XOR-kan dengan Ki yang
panjangnya 48 bit
| |||||||||||||||
menghasilkan
vektor A yang panjangnya 48-bit:
|
E(Ri – 1) Å
Ki = A
·
Vektor A dikelompokkan menjadi 8 kelompok, masing-masing 6 bit, dan
menjadi masukan bagi proses substitusi. Proses substitusi dilakukan dengan
menggunakan delapan buah kotak-S (S-box),
S1 sampai S8. Setiap kotak-S menerima masukan
6 bit dan menghasilkan keluaran 4 bit. Kelompok 6-bit pertama menggunakan S1, kelompok 6-bit kedua menggunakan
S2, dan seterusnya.
· Keluaran
proses substitusi adalah vektor B yang
panjangnya
|
|||||||||||||||||||
48 bit. Vektor B
menjadi masukan untuk proses permutasi.
|
|||||||||||||||||||
Tujuan permutasi adalah untuk mengacak hasil proses
|
|||||||||||||||||||
substitusi
kotak-S. Permutasi dilakukan dengan
|
|||||||||||||||||||
menggunakan
matriks permutasi P (P-box) sbb:
|
|||||||||||||||||||
16
|
7
|
20
|
21
|
29
|
12
|
28
|
17
|
1
|
15
|
23
|
26
|
5
|
8
|
31
|
10
|
||||
2
|
8
|
24
|
14
|
32
|
27
|
3
|
9
|
19
|
13
|
30
|
6
|
22
|
11
|
4
|
25
|
||||
·
|
Bit-bit P(B) merupakan keluaran dari fungsi f.
|
||||||||||||||||||
·
|
Akhirnya, bit-bit P(B) di-XOR-kan dengan Li – 1 untuk
|
||||||||||||||||||
mendapatkan
Ri
|
Ri = Li – 1 Å P(B)
Jadi, keluaran dari putaran ke-i adalah (Li, Ri) = (Ri – 1 , Li – 1 Å P(B))
Permutasi Terakhir ( Inverse Initial Permutation)
Permutasi terakhir dilakukan
setelah 16 kali putaran terhadap gabungan blok kiri dan blok kanan.
Proses permutasi menggunakan
matriks permutasi awal balikan (inverse
initial permutation atau IP-1 ) sbb:
40
|
8
|
48
|
16
|
56
|
24
|
64
|
32
|
39
|
7
|
47
|
15
|
55
|
23
|
63
|
31
|
38
|
6
|
46
|
14
|
54
|
22
|
62
|
30
|
37
|
5
|
45
|
13
|
53
|
21
|
61
|
29
|
36
|
4
|
44
|
12
|
52
|
20
|
60
|
28
|
35
|
3
|
43
|
11
|
51
|
19
|
59
|
27
|
34
|
2
|
42
|
10
|
50
|
18
|
58
|
26
|
33
|
1
|
41
|
9
|
49
|
17
|
57
|
25
|
Proses Dekripsi
·
Proses dekripsi terhadap cipherteks merupakan kebalikan
dari proses enkripsi. DES menggunakan algoritma yang sama
untuk proses enkripsi dan dekripsi. Jika pada proses enkripsi
urutan kunci internal yang digunakan adalah K1, K2, …, K16,
maka pada proses dekripsi urutan kunci yang digunakan
adalah K16, K15, …, K1.
·
Untuk tiap putaran 16, 15, …, 1, keluaran pada setiap putaran
deciphering adalah
Li = Ri – 1
Ri
= Li – 1 Å f(Ri – 1, Ki)
yang dalam hal ini, (R16, L16) adalah blok masukan awal
untuk deciphering. Blok (R16, L16) diperoleh dengan
mempermutasikan cipherteks dengan matriks permutasi IP-1
.
Pra-keluaran dari deciphering adalah adalah (L0, R0). Dengan
permutasi awal IP akan didapatkan kembali blok plainteks
semula.
Rinaldi Munir – IF5054 Kriptografi 14
· Tinjau kembali proses pembangkitan kunci internal pada
Gambar 4. Selama deciphering, K16 dihasilkan dari (C16, D16)
dengan permutasi PC-2. Tentu saja (C16, D16) tidak dapat
diperoleh langsung pada permulaan deciphering. Tetapi
karena (C16, D16) = (C0, D0), maka K16 dapat dihasilkan dari
(C0, D0) tanpa perlu lagi melakukan pergeseran bit. Catatlah
bahwa (C0, D0) yang merupakan bit-bit dari kunci eksternal
K yang diberikan pengguna pada waktu dekripsi.
Selanjutnya, K15 dihasilkan dari (C15, D15) yang mana (C15,
D15) diperoleh dengan menggeser C16 (yang sama dengan C0)
dan D16 (yang sama dengan C0) satu bit ke kanan. Sisanya,
K14 sampai K1 dihasilkan dari (C14, D14) sampai (C1, D1).
Catatlah bahwa (Ci – 1, Di – 1) diperoleh dengan menggeser Ci
dan Di dengan cara yang sama seperti pada Tabel 1, tetapi
pergeseran kiri (left shift) diganti menjadi pergeseran kanan
(right shift).
STUDI KASUS
Penyerangan Terhadap Jaringan KPU Tahun 2004
Jaringan internet di Pusat Tabulasi Nasional Komisi Pemilihan Umum sempat down (terganggu) beberapa kali, diantaranya terjadi pada tahun 2004 dan 2009. Pada tahun 2004 terungkap dengan tertangkapnya Dani Firmansyah (25) oleh Aparat Satuan Cyber Crime Direktorat Reserse Khusus Kepolisian Daerah Metro Jaya, yang diduga kuat sebagai pelaku yang membobol situs (hacker) di Pusat Tabulasi Nasional Pemilu Komisi Pemilihan Umum (TNP KPU). Kepada polisi, Dani mengaku meng-hack situs tersebut hanya karena ingin mengetes keamanan sistem keamanan server tnp.kpu.go.id, yang disebut-sebut mempunyai sistem pengamanan berlapis-lapis. Motivasi tersangka melakukan serangan ke website KPU yaitu Dani merasa tertantang dengan pernyataaan Ketua Kelompok Kerja TI
KPU Chusnul Mar’iyah disebuah tayangan televisi dan untuk memperingatkan kepada tim TI KPU bahwa sistem TI yang seharga Rp 125 miliar itu ternyata tidak aman. Tersangka berhasil menembus server tnp.kpu.go.id dengan cara XSS atau Cross Site Scripting dan SQL Injection, Meski perbuatan itu hanya iseng, kata Makbul, polisi tetap menilai tindakan Dani telah melanggar hukum dan dapat menimbulkan ganggan fisik dan elektromagnetik terhadap penyelenggaraan telekomunikasi dan menghancurkan atau merusak barang.
Dani Firmansyah, hacker situs tnp.kpu.go.id yang merupakan konsultan TI Danareksa sebelumnya ternyata juga pernah membobol situs Danareksa. Pihak PT Danareksa menegaskan bahwa kegiatan hacking KPU adalah tindakan pribadi Dani Firmansyah yang tidak ada sangkut pautnya dengan PT Danareksa.
Ditangkapnya Dani Firmansyah sebagai tersangka pelaku penyusupan atas situs tnp.kpu.go.id menuai protes dari beberapa kalangan. Perbuatan Dani oleh kalangan tersebut dianggap sebagai perbuatan yang baik karena Dani menunjukkan kelemahan sistem.Komunitas Hacker pun kembali menyerukan pembebasan Dani Firmansyah, tersangka penyusup situs KPU.
Maka menjadi aneh ketika KPU gagal mengamankan situsnya dari serangan dengan teknik 'lawas' itu. "Pertanyaan yang paling mendasar adalah, kok bisa-bisanya sebuah sistem berharga ratusan miliar tersebut bisa dibobol hanya dengan modal teknik klasik oleh seorang hacker iseng? " ujar Donny B.U, pengamat Telematika dan koordinator ICT Watch, dalam siaran.pers.yang.diterima.detikcom,Selasa.(26/04/04).
Apa yang dilakukan oleh KPU, dengan membuat sistem keamanan yang berlapis namun menyisakan lubang SQL Injection tersebut, diibaratkan Donny sebagai usaha pengamanan rumah yang teledor. "Jadi ibaratnya kita mengelilingi rumah kita dengan kawat berduri serta memasang teralis di seluruh pintu masuk, tetapi jendela samping dibiarkan atau tanpa sengaja terbuka.lebar,"kata.Donny.
Donny mengharapkan KPU, selaku pemilik dan administrator sistem itu, bertanggungjawab atas kejadian tersebut. "Pihak pemilik sistem, dalam hal ini KPU, juga perlu dimintakan pertanggung-jawaban kepada publik, dan kalau perlu dihadapan hukum, atas keteledorannya,". Donny menjelaskan.
Mengenai keteledoran KPU dan keharusan mereka untuk bertanggungjawab juga sempat diucapkan oleh pengamat Telematika asal UGM, Roy Suryo. Roy beranggapan bahwa KPU juga lalai dalam menjamin keamanan sistem milik umum tersebut.
Apa yang dilakukan oleh Dani pada dasarnya bukan hal yang mengerikan. Ia hanya mengubah nama partai peserta Pemilu menjadi nama yang aneh dan lucu seperti Partai Jambu, Partai.Kolor.Ijo.dan.sejenisnya
Donny beranggapan ada hal lain yang mungkin dilakukan Dani yang dampaknya akan lebih mengerikan. "(Jika Dani) mengubah nama partai Golkar menjadi partai PDI Perjuangan, dan demikian sebaliknya. Itulah yang benar-benar dapat dikatakan membuat kekacauan,"demikian.pendapat.Donny.
Namun, pada kenyataannya, hal itu tidak dilakukan. Dan, apabila hal itu sampai terjadi, Donny tetap beranggapan bahwa KPU yang seharusnya bertanggungjawab.
Dani Firmansyah, tersangka penyusupan situs KPU, dinyatakan menggunakan teknik SQL Injection dalam melakukan aksinya. Perlu diketahui, teknik tersebut merupakan teknik yang telah lama beredar di kalangan Teknologi Informasi (TI). Teknik itu juga tidak melibatkan pembobolan.tingkat.tinggi.
Donny menambahkan"Tidak menjadi kesalahan para hacker sepenuhnya, jika banyak di antara mereka yang sebelumnya sempat tergiur untuk mencoba-coba masuk ke dalam sistem komputer KPU,"
Jaringan internet di Pusat Tabulasi Nasional Komisi Pemilihan Umum sempat down (terganggu) beberapa kali, diantaranya terjadi pada tahun 2004 dan 2009. Pada tahun 2004 terungkap dengan tertangkapnya Dani Firmansyah (25) oleh Aparat Satuan Cyber Crime Direktorat Reserse Khusus Kepolisian Daerah Metro Jaya, yang diduga kuat sebagai pelaku yang membobol situs (hacker) di Pusat Tabulasi Nasional Pemilu Komisi Pemilihan Umum (TNP KPU). Kepada polisi, Dani mengaku meng-hack situs tersebut hanya karena ingin mengetes keamanan sistem keamanan server tnp.kpu.go.id, yang disebut-sebut mempunyai sistem pengamanan berlapis-lapis. Motivasi tersangka melakukan serangan ke website KPU yaitu Dani merasa tertantang dengan pernyataaan Ketua Kelompok Kerja TI
KPU Chusnul Mar’iyah disebuah tayangan televisi dan untuk memperingatkan kepada tim TI KPU bahwa sistem TI yang seharga Rp 125 miliar itu ternyata tidak aman. Tersangka berhasil menembus server tnp.kpu.go.id dengan cara XSS atau Cross Site Scripting dan SQL Injection, Meski perbuatan itu hanya iseng, kata Makbul, polisi tetap menilai tindakan Dani telah melanggar hukum dan dapat menimbulkan ganggan fisik dan elektromagnetik terhadap penyelenggaraan telekomunikasi dan menghancurkan atau merusak barang.
Dani Firmansyah, hacker situs tnp.kpu.go.id yang merupakan konsultan TI Danareksa sebelumnya ternyata juga pernah membobol situs Danareksa. Pihak PT Danareksa menegaskan bahwa kegiatan hacking KPU adalah tindakan pribadi Dani Firmansyah yang tidak ada sangkut pautnya dengan PT Danareksa.
Ditangkapnya Dani Firmansyah sebagai tersangka pelaku penyusupan atas situs tnp.kpu.go.id menuai protes dari beberapa kalangan. Perbuatan Dani oleh kalangan tersebut dianggap sebagai perbuatan yang baik karena Dani menunjukkan kelemahan sistem.Komunitas Hacker pun kembali menyerukan pembebasan Dani Firmansyah, tersangka penyusup situs KPU.
Maka menjadi aneh ketika KPU gagal mengamankan situsnya dari serangan dengan teknik 'lawas' itu. "Pertanyaan yang paling mendasar adalah, kok bisa-bisanya sebuah sistem berharga ratusan miliar tersebut bisa dibobol hanya dengan modal teknik klasik oleh seorang hacker iseng? " ujar Donny B.U, pengamat Telematika dan koordinator ICT Watch, dalam siaran.pers.yang.diterima.detikcom,Selasa.(26/04/04).
Apa yang dilakukan oleh KPU, dengan membuat sistem keamanan yang berlapis namun menyisakan lubang SQL Injection tersebut, diibaratkan Donny sebagai usaha pengamanan rumah yang teledor. "Jadi ibaratnya kita mengelilingi rumah kita dengan kawat berduri serta memasang teralis di seluruh pintu masuk, tetapi jendela samping dibiarkan atau tanpa sengaja terbuka.lebar,"kata.Donny.
Donny mengharapkan KPU, selaku pemilik dan administrator sistem itu, bertanggungjawab atas kejadian tersebut. "Pihak pemilik sistem, dalam hal ini KPU, juga perlu dimintakan pertanggung-jawaban kepada publik, dan kalau perlu dihadapan hukum, atas keteledorannya,". Donny menjelaskan.
Mengenai keteledoran KPU dan keharusan mereka untuk bertanggungjawab juga sempat diucapkan oleh pengamat Telematika asal UGM, Roy Suryo. Roy beranggapan bahwa KPU juga lalai dalam menjamin keamanan sistem milik umum tersebut.
Apa yang dilakukan oleh Dani pada dasarnya bukan hal yang mengerikan. Ia hanya mengubah nama partai peserta Pemilu menjadi nama yang aneh dan lucu seperti Partai Jambu, Partai.Kolor.Ijo.dan.sejenisnya
Donny beranggapan ada hal lain yang mungkin dilakukan Dani yang dampaknya akan lebih mengerikan. "(Jika Dani) mengubah nama partai Golkar menjadi partai PDI Perjuangan, dan demikian sebaliknya. Itulah yang benar-benar dapat dikatakan membuat kekacauan,"demikian.pendapat.Donny.
Namun, pada kenyataannya, hal itu tidak dilakukan. Dan, apabila hal itu sampai terjadi, Donny tetap beranggapan bahwa KPU yang seharusnya bertanggungjawab.
Dani Firmansyah, tersangka penyusupan situs KPU, dinyatakan menggunakan teknik SQL Injection dalam melakukan aksinya. Perlu diketahui, teknik tersebut merupakan teknik yang telah lama beredar di kalangan Teknologi Informasi (TI). Teknik itu juga tidak melibatkan pembobolan.tingkat.tinggi.
Donny menambahkan"Tidak menjadi kesalahan para hacker sepenuhnya, jika banyak di antara mereka yang sebelumnya sempat tergiur untuk mencoba-coba masuk ke dalam sistem komputer KPU,"
PROGRAM ALGORITMA DES DENGAN BAHASA PEMROGRAMAN C++
Source Code :
include <cstdlib>
#include <iostream>
#include <string.h>
#define maks 500
using namespace std;
class Enkripsi{
public:
Enkripsi();
void enkripsi();
void deskripsi();
void output();
private:
char chiper[maks];
int key;
char plain[maks];
};
Enkripsi::Enkripsi(){
cout<<“Masukkan kata : “;
cin.getline(chiper,sizeof(chiper));
cout<<“Masukkan key : “;
cin>>key;
cout<<endl;
}
void Enkripsi::enkripsi(){
for(int i=0;i<strlen(chiper);i+=1){
cout<<chiper[i]<<“(“<<int(chiper[i])<<“) “;
chiper[i] = (chiper[i]+key)%128;
}
}
void Enkripsi::deskripsi(){
for(int i=0;i<strlen(chiper);i+=1){
plain[i] = (chiper[i]-key)%128;
chiper[i] = plain[i];
}
}
void Enkripsi::output(){
for(int i=0;i<strlen(chiper);i+=1){
cout<<chiper[i];
}
}
int main(int argc, char *argv[])
{
Enkripsi Deskripsi;
Deskripsi.enkripsi();
cout<<“\n\nSetelah diEnkripsi : “;
Deskripsi.output();
Deskripsi.deskripsi();
cout<<“\n\nKembali diDeskripsi : “;
Deskripsi.output();
cout<<endl<<endl;
system(“PAUSE”);
return EXIT_SUCCESS;
}
#include <iostream>
#include <string.h>
#define maks 500
using namespace std;
class Enkripsi{
public:
Enkripsi();
void enkripsi();
void deskripsi();
void output();
private:
char chiper[maks];
int key;
char plain[maks];
};
Enkripsi::Enkripsi(){
cout<<“Masukkan kata : “;
cin.getline(chiper,sizeof(chiper));
cout<<“Masukkan key : “;
cin>>key;
cout<<endl;
}
void Enkripsi::enkripsi(){
for(int i=0;i<strlen(chiper);i+=1){
cout<<chiper[i]<<“(“<<int(chiper[i])<<“) “;
chiper[i] = (chiper[i]+key)%128;
}
}
void Enkripsi::deskripsi(){
for(int i=0;i<strlen(chiper);i+=1){
plain[i] = (chiper[i]-key)%128;
chiper[i] = plain[i];
}
}
void Enkripsi::output(){
for(int i=0;i<strlen(chiper);i+=1){
cout<<chiper[i];
}
}
int main(int argc, char *argv[])
{
Enkripsi Deskripsi;
Deskripsi.enkripsi();
cout<<“\n\nSetelah diEnkripsi : “;
Deskripsi.output();
Deskripsi.deskripsi();
cout<<“\n\nKembali diDeskripsi : “;
Deskripsi.output();
cout<<endl<<endl;
system(“PAUSE”);
return EXIT_SUCCESS;
}
REFERENSI :
http://informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/Data%20Encryption%20Standard%20(DES)
Komentar
Posting Komentar