1 ABSTRACT
Nowadays in the age of information, many people using internet for
communication and transferring data. The security aspect in data transaction is one
of the most important aspects. One of the solutions to handle this is with data
encoding or encryption.
The encryption method encodes the data, so anyone can not read the
information of data except the owner. There are two general types of encryption
algorithm, symmetric algorithm and asymmetric algorithm. The Algorithm which
used in this book is symmetric algorithm. Symmetric algorithm encodes and decodes
with the same key.
In this project has successfully built an encryption software using Camellia
2 ABSTRAK
Pada saat ini penggunaan jaringan internet sudah merupakan suatu kebutuhan
yang cukup vital. Jaringan internet sangat rawan tingkat keamanannya, sehingga data
tidak hanya diterima oleh penerima data tetapi orang lain yang ingin mengetahui data
tersebut dapat mengambilnya juga.
Salah satu solusi untuk mengamankan data yang dikirimkan adalah dengan
melalukan enkripsi (penyandian) pada data. Enkripsi dibagi menjadi dua bagian yaitu
algoritma simetrik dan algoritma asimetrik. Pada tugas akhir ini algoritma yang
dipakai adalah algoritma simetrik, yaitu penyandian dengan menggunakan kunci yang
sama. Data yang dikirimkan adalah data hasil penyandian atau disebut juga
ciphertext, setelah data diterima maka data akan diolah kembali menjadi data
sebenarnya atau disebut juga plaintext.
Tugas akhir ini telah berhasil merealisasikan perangkat lunak pengaman data
dengan algoritma simetrik metoda Camellia menggunakan bahasa pemrograman
DAFTAR ISI
ABSTRACT...i
ABSTRAK...ii
KATA PENGANTAR...iii
DAFTAR ISI. ...v
DAFTAR GAMBAR...ix
DAFTAR TABEL...xi
BAB 1 PENDAHULUAN...1
1.1 Latar Belakang...1
1.2 Identifikasi Masalah...2
1.3 Tujuan...2
1.4 Pembatasan Masalah...2
1.5 Spesifikasi Hardware...2
1.6 Sistematika Pembahasan...3
BAB II TEORI PENUNJANG...4
2.1 Kriptografi...4
2.1.1 Teori Kriptografi...4
2.2 Algoritma Simetris dan Asimetris...6
2.2.1 Algoritma Simetris...6
2.2.2 Algoritma Asimetris...7
2.2.3 Block Cipher dan Stream Cipher...8
2.3.1 Electronic Codebook (ECB) ...9
2.3.2 Cipher Block Chaining (CBC) ...10
2.4 Teori Matematika...11
2.4.1 Bilangan Prima...11
2.4.2 Operasi Modulus...12
2.4.3 Algoritma Euclidean...12
2.4.4 Algoritma Extended Euclidean...13
2.4.5 Exponensial Modulus...14
2.4.6 Fungsi XOR...15
2.5 Enkripsi dan Dekripsi Dengan Algoritma Camellia...15
2.5.1 Enkripsi Dengan Algoritma Camellia...15
2.5.2 Dekripsi Dengan Algoritma Camellia...16
2.5.3 Panjang dari Kunci yang Bervariasi...17
2.5.4 Penjadwalan Kunci...17
2.6 Komponen-Komponen Camellia...21
2.6.1 Fungsi – F...21
2.6.2 Fungsi – P...21
2.6.3 Fungsi – S...22
2.6.4 S – box...22
2.6.5 Fungsi FL...25
2.6.6 Fungsi FL-1...25
2.7 Algoritma Validasi Data...26
2.8.1 Algoritma Pembangkit Kunci Tanda Tangan Digital ... 27
2.8.2 Algoritma Tanda Tangan Digital...27
2.8.3 Algoritma Verifikasi Tanda Tangan Digital...27
BAB III PERANCANGAN DAN REALISASI PERANGKAT LUNAK...28
3.1 Realisasi Perangkat Lunak...28
3.2 Program Utama ...31
3.3 Program Enkripsi...31
3.4 Program Dekripsi...36
3.5 Program Timer...41
3.6 Program Pembangkit Tanda Tangan Digital...41
3.6.1 Sub Program rdmprime...43
3.6.2 Sub Program gcd...44
3.6.3 Sub Program Euclid...44
3.6.4 Sub Program Validasi...46
3.6.5 Program Pencocokan Tanda Tangan Digital...46
BAB IV HASIL PENGAMATAN...48
4.1 Hasil Pengamatan Sederhana Program Enkripsi dan Dekripsi Camellia...48
4.1.1 Pengamatan Enkripsi Camellia Dengan Plain Text Berbeda dan Kunci Yang Sama. ... ...48
4.1.2 Pengamatan Enkripsi Camellia Dengan Plain Text Yang Sama dan Berbeda Dengan Kunci Yang Berbeda...49
4.2.1 Proses Enkripsi dan Dekripsi Camellia Terhadap File Text Dengan
Kunci Yang Pertama “elektromarnat” ...49
4.2.2 Proses Enkripsi dan Dekripsi Camellia Terhadap File Text Dengan Kunci Yang Kedua “ukm” ...51
4.3 Hasil Pengamatan Waktu Dan Ukuran File Proses Enkripsi dan Dekripsi Camellia...52
4.3.1Pengamatan Waktu Enkripsi dan Dekripsi Dengan Kunci Yang Sama....52
4.4 Pengamatan Enkripsi dan Dekripsi Dengan Kunci Yang Salah...53
4.5 Hasil Pengamatan Proses Enkripsi dan Dekripsi Camellia Dalam Proses Validasi... ...54
4.6 Hasil Pengamatan Proses Tanda Tangan Digital...56
4.6.1 Pengamatan Proses Tanda Tangan Digital Dengan Public Key Yang Sama... ...56
4.6.2 Pengamatan Proses Tanda Tangan Digital Dengan Public Key Yang Salah... ...56
4.7 Analisa Hasil Pengamatan...57
BAB V KESIMPULAN DAN SARAN...58
5.1 Kesimpulan...58
5.2 Saran... ...58
Daftar Pustaka... ...59
Lampiran A Listing Program ...A-1
Lampiran B Subtitution Box...B-1
DAFTAR GAMBAR
Gambar 2.1 Diagram Proses Enkripsi dan Dekripsi...5
Gambar 2.2 Diagram Proses Enkripsi dan Dekripsi Algoritma Simetris...6
Gambar 2.3 Diagram Proses Enkripsi dan Dekripsi Algoritma Asimetris...7
Gambar 2.4 Skema Mode Operasi ECB...9
Gambar 2.5 Skema Mode Operasi CBC...10
Gambar 2.6 Penjadwalan Kunci...19
Gambar 2.7 Fungsi – F...21
Gambar 2.8 Fungi FL... ...25
Gambar 2.9 Fungi FL-1... ...26
Gambar 3.1 Tampilan Program Membuat Plain Text...28
Gambar 3.2 Tampilan Program Enkripsi...29
Gambar 3.3 Tampilan Program Dekripsi...30
Gambar 3.4 Diagram Alir Program Pengaman Data...30
Gambar 3.5 Diagram Alir Pengolahan Plain Text...31
Gambar 3.6 Prosedur Enkripsi Camellia Untuk Kunci 128 - bit...33
Gambar 3.7 Prosedur Enkripsi Camellia Untuk Kunci 192/256 – bit...34
Gambar 3.8 Diagram Alur Program Enkripsi ...35
Gambar 3.9 Prosedur Dekripsi Camellia Untuk Kunci 128 - bit...38
Gambar 3.10 Prosedur Dekripsi Camellia Untuk Kunci 192/256 – bit...39
Gambar 3.11 Diagram Alur Program Dekripsi ...35
Gambar 3.13 Diagram Alir Sub Program RdmPrime...43
Gambar 3.14 Diagram Alir Sub Program gcd...44
Gambar 3.15 Diagram Alir Sub Program Euclid...45
Gambar 3.16 Diagram Alir Sub Program Data Validasi...46
Gambar 3.17 Diagram Alir Sub Program Pencocokan Tanda Tangan Digital...46
Gambar 3.18 Diagram Alir Sub Program Pangkatmod...47
Gambar 4.1 Pengecekan Dengan menggunakan Kunci Yang Berbeda...54
Gambar 4.2 Pengecekan Validasi...55
Gambar 4.3 Pengecekan Tanda Tangan Digital...57
DAFTAR TABEL
Tabel 2.1 Nilai Extended Euclidean ...13
Tabel 2.2 Penjadwalan Kunci Yang Konstan...18
Tabel 2.3 Kunci Rahasia Untuk Subkey 128-bit dan 182/256-bit...20
Tabel 2.4 S – Box1...23
Tabel 2.5 S – Box2...23
Tabel 2.6 S – Box3...24
Tabel 2.7 S – Box4...24
Tabel 4.1 Enkripsi dan Dekripsi Dengan Kunci Yang Sama,PlainText Berbeda...48
Tabel 4.2 Enkripsi dan Dekripsi Dengan PlainText Yang Sama dan Berbeda Dengan Kunci Yang Berbeda...49
Tabel 4.3 Hasil Pengamatan Proses Enkripsi Camellia...52
Listing UMain.pas
unit UMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Menus, ComCtrls, Buttons, ShellAPI;
type
TMain = class(TForm)
edPass1: TEdit;
OpenDlgDec: TOpenDialog; OpenDlgEnc: TOpenDialog; SaveDlgEnc: TSaveDialog; SaveDlgDec: TSaveDialog; SaveDlgV: TSaveDialog; BtnViewCipherFiles: TBitBtn; BitBtn1: TBitBtn;
procedure btSimpanClick(Sender: TObject); procedure btBrowseClick(Sender: TObject); procedure btBrowse1Click(Sender: TObject); procedure btGenClick(Sender: TObject); procedure About1Click(Sender: TObject); procedure btEncryptClick(Sender: TObject); procedure btDecryptClick(Sender: TObject);
procedure BtnViewCiphrFilesClick(Sender: TObject); procedure Exit1Click(Sender: TObject);
implementation
uses Camellia, RSATools, Tools, UAbout;
{$R *.dfm}
procedure TMain.btSimpanClick(Sender: TObject); begin
if SaveDlgP.Execute then begin
CreateP.Lines.SaveToFile(SaveDlgP.FileName); end;
edPath.Text:=OpenDlgEnc.FileName; RPlain.Clear;
RPlain.Lines.LoadFromFile(OpenDlgEnc.FileName); end;
edPath1.Text:=OpenDlgDec.FileName; RCipher.Clear;
RCipher.Lines.LoadFromFile(OpenDlgDec.FileName); end;
temp2 : array of Longint; // temp dynamic array handler that hand selection of e
temp4 : Longint;
//random selection of e ulang:
//select e that is prime
For i1 := 2 To Round(Sqrt(temp4)) do begin
GoTo ulang;
awal,akhir,lama:TDateTime; i,d,n:Integer;
s,x:longint; begin
if edPass.Text = '' then
MessageDlg('Kata Kunci Belum Diisi',mtError,mbOKCancel,0) else
if RPlain.Text = '' then
MessageDlg('Document masih kosong',mtError,mbOKCancel,0) else
if PrivD.Text = '' then
repeat Signature','Pesan',MB_OK) = IDOK then
valid:TextFile;
Buffer: array[0..15] of byte; temp:Byte128;
Read:Integer;
awal,akhir,lama:TDateTime; i,e,n:Integer;
s,p:Longint; begin
if edPass1.Text = '' then
MessageDlg('Kata Kunci Belum Diisi',mtError,mbOKCancel,0) else
if RCipher.Text = '' then
AssignFile(Dest,SaveDlgDec.FileName);
if FileExists(SaveDlgEnc.FileName) then
edPass.Clear; PrivD.Clear; PrivN.Clear; PubE.Clear; PubN.Clear; RPlain.Clear; end;
procedure TMain.TabSheet2Show(Sender: TObject); begin
OpenDlgDec.FileName:=''; SaveDlgDec.FileName:=''; OpenDlgV.FileName:=''; edPath1.Clear;
edPass1.Clear; edStart1.Clear; edDuration1.Clear; edEnd1.Clear; PubE1.Clear; PubN1.Clear; RCipher.Clear; end;
procedure TMain.BitBtn1Click(Sender: TObject); begin
if FileExists(SaveDlgDec.FileName) then
ShellExecute(Handle, nil, PChar('NotePad.exe'), PChar(SaveDlgDec.FileName), nil, sw_ShowNormal);
end;
procedure TMain.TabSheet3Show(Sender: TObject); begin
SaveDlgP.FileName:=''; CreateP.Clear;
end;
Listing Tools.pas
function LRot16(X: word; c: integer): word; assembler; function RRot16(X: word; c: integer): word; assembler; function LRot32(X: dword; c: integer): dword; assembler; function RRot32(X: dword; c: integer): dword; assembler; function SwapDWord(X: DWord): DWord; register; assembler;
procedure XorBlock128(const I1: Byte128; const I2: Byte128; var O1: Byte128);
procedure XorBlock64(const I1: Byte64; const I2: Byte64; var O1: Byte64); procedure IncBlock(P: PByteArray; Len: integer);
procedure SwapHalf(var x: Byte128);
procedure ByteDword(const x: PByteArray; var y: Word128); procedure DWordByte(const x: Word128; var y: PByteArray); function RotBlock128(const x: Byte128; const n: integer): Byte128; procedure split128(const x: Byte128; var L: Byte64; var R: Byte64); procedure merge128(const L: Byte64; const R: Byte64; var z: Byte128);
implementation
function LRot16(X: word; c: integer): word; assembler; asm
asm
function LRot32(X: dword; c: integer): dword; register; assembler; asm
mov ecx, edx rol eax, cl end;
function RRot32(X: dword; c: integer): dword; register; assembler; asm
mov ecx, edx ror eax, cl end;
function SwapDWord(X: DWord): DWord; register; assembler; asm
xchg al,ah rol eax,16 xchg al,ah end;
procedure XorBlock128(const I1: Byte128; const I2: Byte128; var O1: Byte128);
procedure XorBlock64(const I1: Byte64; const I2: Byte64; var O1: Byte64); var
procedure IncBlock(P: PByteArray; Len: integer); begin
Inc(P[Len-1]);
end;
procedure SwapHalf(var x: Byte128); var t:byte;
procedure ByteDword(const x: PByteArray; var y: Word128); var i: Integer;
procedure DWordByte(const x: Word128; var y: PByteArray); var i: integer;
function pangkat(const x: integer; const y: integer): integer; var res,i : integer;
result:=1
function RotBlock128(const x: Byte128; const n: integer): Byte128; var y:Byte128;
procedure split128(const x: Byte128; var L: Byte64; var R: Byte64); var i:integer;
for i:=0 to 7 do begin
Le[i]:=x[i]; Ri[i]:=x[i+8]; end;
move(Le,L,sizeof(Le)); move(Ri,R,sizeof(Ri)); end;
procedure merge128(const L: Byte64; const R: Byte64; var z: Byte128); var i:integer;
begin
for i:=0 to 7 do begin
z[i]:=L[i]; z[i+8]:=R[i]; end;
end;
* Program Pembangkit Kunci
// preschedule ktemp:=RotBlock128(KA,111); split128(ktemp,Kw[3],Kw[4]);
// k schedule
split128(KA,k[1],k[2]);
ktemp:=RotBlock128(KL,15); split128(ktemp,k[3],k[4]); ktemp:=RotBlock128(KA,15); split128(ktemp,k[5],k[6]); ktemp:=RotBlock128(KL,45); split128(ktemp,k[7],k[8]); ktemp:=RotBlock128(KA,45); split128(ktemp,k[9],d); ktemp:=RotBlock128(KL,60); split128(ktemp,d,k[10]); ktemp:=RotBlock128(KA,60); split128(ktemp,k[11],k[12]); ktemp:=RotBlock128(KL,94); split128(ktemp,k[13],k[14]); ktemp:=RotBlock128(KA,94); split128(ktemp,k[15],k[16]); ktemp:=RotBlock128(KL,111); split128(ktemp,k[17],k[18]);
// K1 schedule
ktemp:=RotBlock128(KA,30); split128(ktemp,k1[1],k1[2]); ktemp:=RotBlock128(KL,77); split128(ktemp,k1[3],k1[4]); end
else
begin
// Kw schedule
// k schedule
split128(KB,k[1],k[2]);
ktemp:=RotBlock128(KR,15); split128(ktemp,k[3],k[4]); ktemp:=RotBlock128(KA,15); split128(ktemp,k[5],k[6]); ktemp:=RotBlock128(KB,30); split128(ktemp,k[7],k[8]); ktemp:=RotBlock128(KL,45); split128(ktemp,k[9],k[10]); ktemp:=RotBlock128(KA,45); split128(ktemp,k[11],k[12]); ktemp:=RotBlock128(KR,60); split128(ktemp,k[13],k[14]); ktemp:=RotBlock128(KB,60); split128(ktemp,k[15],k[16]); ktemp:=RotBlock128(KL,77); split128(ktemp,k[17],k[18]); ktemp:=RotBlock128(KR,94); split128(ktemp,k[19],k[20]); ktemp:=RotBlock128(KA,94); split128(ktemp,k[21],k[22]); ktemp:=RotBlock128(KL,111); split128(ktemp,k[23],k[24]);
// K1 schedule
ktemp:=RotBlock128(KR,30); split128(ktemp,k1[1],k1[2]); ktemp:=RotBlock128(KL,60); split128(ktemp,k1[3],k1[4]); ktemp:=RotBlock128(KA,77); split128(ktemp,k1[5],k1[6]); end;
* Program Enkripsi
end else begin
for i:=1 to round do begin
if (i = 6) or (i = 12) or (i = 18) then
FLayer(N[i-1],k[i],k1[2*(i div 6)-1],k1[2*(i div 6)+1],N[i]) else
Feistel(N[i-1],k[i],N[i]); end;
end;
// post whitening if keylen = 128 then begin
merge128(Kw[3],Kw[4],ktmp); SwapHalf(N[18]);
XorBlock128(N[18],ktmp,c); end
else begin
merge128(Kw[3],Kw[4],ktmp); SwapHalf(N[24]);
XorBlock128(N[24],ktmp,c); end;
* Program Dekripsi
FLayerInv(N[i],k[i],k1[(2*(i-1) div 6)],k1[(2*(i-1) div 6)-1],N[i-1]) else
FeistelInv(N[i],k[i],N[i-1]); end;
end else begin
for i:=round downto 1 do begin
if (i = 7) or (i = 13) or (i = 19) then
FLayerInv(N[i],k[i],k1[(2*(i-1) div 6)],k1[(2*(i-1) div 6)-1],N[i-1]) else
FeistelInv(N[i],k[i],N[i-1]); end;
end;
// post whitening
merge128(Kw[1],Kw[2],ktmp); XorBlock128(N[0],ktmp,p);
end;
Subtitution Box 1
cast_sbox1: array[0..255]of DWord= (
Subtitution Box 2
cast_sbox2: array[0..255] of DWord = (
Subtitution Box 3
cast_sbox3: array[0..255] of DWord = (
Subtitution Box 4
cast_sbox4: array[0..255] of DWord = (
Gambar Tampilan Program Enkripsi
1
BAB I
PENDAHULUAN
Pada bab ini akan dijelaskan mengenai latar belakang, perumusan
masalah, tujuan, pembatasan masalah, serta sistematika penulisan laporan tugas
akhir.
1.1 Latar Belakang
Berkat perkembangan teknologi yang begitu pesat memungkinkan
manusia dapat berkomunikasi dan saling bertukar informasi/data secara jarak
jauh. Antar kota antar wilayah antar negara bahkan antar benua bukan merupakan
suatu kendala lagi dalam melakukan komunikasi dan pertukaran data. Seiring
dengan itu tuntutan akan sekuritas (keamanan) terhadap kerahasiaan informasi
yang saling dipertukarkan tersebut semakin meningkat. Begitu banyak pengguna
seperti departemen pertahanan, suatu perusahaan atau bahkan individu-individu
tidak ingin informasi yang disampaikannya diketahui oleh orang lain atau
kompetitornya atau negara lain. Oleh karena itu dikembangkanlah cabang ilmu
yang mempelajari tentang cara-cara pengamanan data atau dikenal dengan istilah
Kriptografi.
Dalam kriptografi terdapat dua konsep utama yakni enkripsi dan dekripsi.
Enkripsi adalah proses dimana informasi/data yang hendak dikirim diubah
menjadi bentuk yang hampir tidak dikenali sebagai informasi awalnya dengan
menggunakan algoritma tertentu. Dekripsi adalah kebalikan dari enkripsi yaitu
mengubah kembali bentuk tersamar tersebut menjadi informasi awal.
Camellia merupakan algoritma kriptografi simetris blok cipher. Dalam
Camellia proses enkripsi dan dekripsi dilakukan pada blok data berukuran 128-bit
dengan kunci yang dapat berukuran 128-bit, 192-bit, 256-bit. Algoritma Camellia
2
• Kazumaro Aoki (NTT - Nippon Telegraph and Telephone Corp.)
• Tetsuya Ichikawa (Mitsubishi electric Corp.)
• Masayuki Kanda (NTT – Nippon Telegraph and Telephone Corp.)
• Mitsuru Matsui (Mitsubishi electric Corp.)
• Shiho Moriai (NTT – Nippon Telegraph and Telephone Corp.)
• Junko Nakajima (Mitsubishi electric Corp.)
• Toshio Tokita (Mitsubishi electric Corp.)
1.2 Identifikasi Masalah
Bagaimana membuat program enkripsi dan dekripsi menggunakan algoritma
Camellia ?
1.3 Tujuan
Merealisasikan suatu perangkat lunak berdasarkan teknik enkripsi dan
dekripsi Camellia.
1.4 Pembatasan Masalah
1. Perangkat lunak Enkripsi Camellia diimplementasikan dalam bahasa
pemrograman Borland Delphi.
2. Tidak membahas transmisi data.
3. Data masukan berupa teks atau file teks (*.txt).
1.5 Spesifikasi Hardware
Program diuji dengan menggunakan Pentium(R) 4 CPU 2.40 GH Mhz
3
1.6 Sistematika Pembahasan
Materi pembahasan dalam laporan Tugas Akhir ini adalah
BAB I PENDAHULUAN
Bab ini menjelaskan mengenai latar belakang Tugas Akhir, tujuan Tugas
Akhir, pembatasan masalah dan sistematika pembahasan.
BAB II TEORI PENUNJANG
Bab ini berisi berbagai macam landasan teori yang bersangkutan dengan
enkripsi dan dekripsi algoritma Camellia, yaitu antara lain : teori dasar kriptografi,
algoritma simetrik dan asimetrik, mode enkripsi blok cipher, algoritma Camellia,
dan komponen penyusun Camellia.
BAB III PERANCANGAN DAN REALISASI
Bab ini berisi perancangan dan realisasi dari program enkripsi dan dekripsi
algoritma Camellia.
BAB IV HASIL PENGAMATAN
Bab ini berisi tentang data hasil pengamatan dari proses enkripsi dan
dekripsi algoritma Camellia.
BAB V KESIMPULAN DAN SARAN
Bab ini berisi kesimpulan dan saran yang mungkin berguna dalam
BAB V
Kesimpulan Dan Saran
5.1 Kesimpulan
Berdasarkan hasil pengamatan dapat diambil kesimpulan:
1. Perangkat lunak pengaman data dengan algoritma kunci simetris Camellia
telah berhasil direalisasikan.
2. Program enkripsi mengubah plaintext menjadi ciphertext dengan ukuran bisa
sama besar atau lebih besar dikarenakan penanganan karakter nilstring.
sedangkan program dekripsi mengubah ciphertext menjadi plaintext kembali
dengan ukuran plaintext semula.
3. Perangkat lunak yang direalisasikan telah memenuhi komponen utama
kriptografi yaitu kerahasiaan, keutuhan dan keaslian
4. Keutuhan diperoleh dari proses enkripsi dan validasi data, hasil ciphertext
yang telah diubah,dihilangkan dan ditambahkan tidak dapat didekripsi.
5.2 Saran
Berdasarkan hasil pengamatan dapat diambil saran:
1. Program dapat dikembangkan untuk memproses data masukan selain data
teks, misalnya data gambar.
2. Ukuran file ciphertext yang besar dapat diperkecil dengan menggunakan
Daftar Pustaka
Daftar pustaka :
1. K. Aoki, T. Ichikawa, M. Kanda, M. Matsui, S.Moriai, J. Nakajima, T.
Tokita. Specification of Camellia – a 128-bit block cipher. NTT and
Mitsubishi Electronic Corporation, 2000. Terdapat di
http://info.isl.ntt.co.jp/camellia/
2. Keating, Brigaud. ‘Reuse Methodology Manual’ Kluwer Academic
Publisher, London 2000.
3. Menezes, A.J, Handbook of Applied Cryptography, CRC Press, 1996.
4. Schneider, Bruce.’Applied Cryptography’ John Wiley & Sons Inc, 1996.
5. Yiqun Lisa Yin. A Note on the Block Cipher Camellia. NTT Multimedia