Advance Encryption Standard in Matlab


Di matlab tidak tersedia kriptografi library ataupun script yang dapat digunakan secara langsung oleh sebab itu kita perlu menulis sendiri algoritma kriptografi yang kita inginkan, AES advance Encryption Standard yang digunakan saat ini, hampir sudah 16 tahun algoritma ini digunakan sejak diperkenalkan pada tahun 2001 dengan nama Rinjadel. Salah satu sumber yang dapat digunakan untuk implementasi algoritma ini adalah http://buchholz.hs-bremen.de/aes/schluessel.htm disini Prof Buchholz sangat jelas membuat algoritma AES-128 dalam pemograman matlab sekaligus terdapat pdf yang menjelaskan implementasi AES pada matlab tersebut.

Simulasi Kode Hamming menggunakan modulasi BPSK


Kode Hamming adalah salah satu metode untuk error correction. Kali ini kita ingin mencoba simulasi melalui simulink bagaimana jika Hamming digunakan pada modulasi digital seperti BPSK yang ditransmisikan melewati kanal AWGN. Berikut Simulasi nya:
Screenshot from 2016-02-29 13:17:44

Screenshot from 2016-02-29 13:18:59

Kode Hamming yang kita gunakan adalah 31,26 disini nampak BER menurun setelah melewati Eb/No = 4, dan setelah Eb/No =8 sudah tidak terdapat BER. Berikut file simulink dan mfile

Simulink File: https://www.dropbox.com/s/azcw1frcx8s1hpb/Lab_PKU_BPSK_Hamming.mdl?dl=0

mfile: https://www.dropbox.com/s/sr348gtuij8sctk/Run_puk.m?dl=0

note: run mfile after that you can get the graphic

Modulasi Analog dan Modulasi Digital dengan Input .wav (Simulink)


Kali ini kita mendapat tugas, bagaimana mentransmisikan sinyal suara .wav menggunakan Modulasi Digital dan Modulasi Analog dalam simulink. Dengarkan hasil kualitas suaranya!

Screenshot from 2016-01-31 11:27:56

Skema simulink diatas adalah satu cara untuk mentransmisikan data menggunakan modulasi Analog dan Digital, bagian atas adalah modulasi Analog menggunakan SSB AM dan Bagian bawah adalah digital mengunakan DBPSK. Perlu diketahui untuk input modulasi digital data merupakan data diskrit atau data digital. Oleh sebab itu kita memerlukan konversi dari bentuk suara ke bentuk diskrit/digital.

Hal ini sering disebut ADC (analog to Digital Converter) namun saya tidak ingin menyebutkan di simulasi ini adalah ADC karena pada dasarnya file .wav ini sendiri sudah dalam bentuk digital/diskrit karena sudah tersimpan didalam disk berupa file digital berbentuk .wav. Sejenak kita lupakan tentang kontroversi ADC ini sendiri. kembali kedalam modulasi

Sebelum masuk ke dalam modulasi digital kita menambahkan blok Uniform Encoder dan integer to bit. Blok Uniform Encoder ini merupakan proses Kuantisasi yang menggunakan standart ITU-T Recommendation G.701. Hal ini lazim digunakan pada data file suara yang tidak terkompresi.

Setelah file terkuantisasi dalam bentuk diskrit, kita perlu merubah nilai nilai diskrit tersebut ke bentuk digital atau binary. Blok yang kita bisa gunakan adalah Blok Integer to Bit. Sebenarnya kurang tepat juga kita mengatakan blok tersebut adalah blok yang mengubah bentuk nilai integer kdealam bentuk binary karena hasil quantisasi bisa dalam bentuk floating point atau nilai angka berkoma, namun jangan terlalu pusing dengan intepretasi tipe variable Integer atau Floating sebab di dalam blok Uniform encoder dan Integer to Bit kita bisa mensetting berapa bit yang akan kita gunakan. yang kita gunakan dalam simulasi ini adalah 8 bit karena encoder yang digunakan dari file .wav itu sendiri 8 bit.

Dimana proses sampling? sebenarnya proses sampling ada didalam file itu sendiri yaitu 8Khz. Jika kita runut kembali proses sampling-Kuantisasi-Encoding adalah proses ADC, yang kita simulasikan kembali di Simulink, ya kita hanya mensimulasikan kembali tanpa sebenarnya melakukan proses dari ADC itu sendiri dikarenakan sebenarnya proses ADC itu sendiri sudah terjadi disaat kita merekam suara tersebut

File Simulink dapat didowload dilink berikut, run file simulink tersebut dan bandingkan suaranya, kita juga bisa bandigkan hasi dari grafik waktu ataupun grafik frequency disetiap stepnya menggunakan block spectrum dan time scope.

File Simulink
File .wav (sumber )

Respon Impuls Filter Digital Matlab Simullink


Sebagai contoh kita diberikan tugas, buat skema respon impuls filter digital (direct Form 1) dibawah ini pada simulink

vcxz

dengan spesifikasi sebagai berikut

Filter BPF (Wstop1 = 0.0625, Wstop2=0.0875, Wpass1=0.2625, Wpass2=0.2875), Rp = 1dB, Rs = 60dB

pada dasarnya kita dapat membuat implementasi dalam code matlab secara mudah dan langsung sebagai berikut:

Sebagai contoh kita menggunakan sepesifikasi filter Band Pass Filter BPF dengan spesifikasi diatas

clc, clear all
Ws = [0.0625 0.2875];
Wp = [0.0875 0.2625];
Rp = 1;
Rs = 60;
[n, Wn]= ellipord(Wp, Ws, Rp, Rs);
[b, a] = ellip(n, Rp, Rs,  Wn);
t=0:0.01:1;
X=1*sin(2*pi.*t);
y = filter(b,a,X);
figure,
freqz(b,a)
figure,
subplot(2,1,1)
plot(t,X)
subplot(2,1,2)
plot(t,y), grid on

hasil grafik yang kita dapatkan adalah, sebagai berikut
Screenshot from 2016-01-31 10:39:33
Respon Magnitude dan Fasa Filter yg ditampilkan melalui freqz(b,a)

Screenshot from 2016-01-31 10:40:43
grafik 1 dalah grafik sinyal input berupa sinusiodal dan grafik dibawahnya adalah grafik sinyal output yang telah terfilter menggunakan y = filter(b,a,X);

Nilai a (denumerator) dan b (numerator)

a =

1.0e+03 *

Columns 1 through 6

0.0010 -0.0114 0.0625 -0.2155 0.5241 -0.9507

Columns 7 through 12

1.3259 -1.4439 1.2337 -0.8231 0.4222 -0.1615

Columns 13 through 15

0.0436 -0.0074 0.0006

>> b

b =

Columns 1 through 6

0.0021 -0.0182 0.0758 -0.1945 0.3376 -0.3977

Columns 7 through 12

0.2769 0.0000 -0.2769 0.3977 -0.3376 0.1945

Columns 13 through 15

-0.0758 0.0182 -0.0021

hasil tersebut sudah cukup untuk kita mengetahui bagaimana membuat filter dan menggunakan filter tersebut dalam program matlab, namun bagaimana untuk di simulink
Disimulink setidaknya ada 3 cara yaitu menggunakan Filter FDA tools, Discrete filter block dan membuat response impluse sendiri. Namun dengan menggunakan Discrete filter block dan membuat response impluse sendiri kita harus mencari nilai a dan b terlebih dahulu bisa menggunakan code diatas ata FDA tools, berikut simulasi pada simulink:

Screenshot from 2016-01-31 10:51:25
simulink block

Screenshot from 2016-01-31 10:51:53
hasil input dan output

jika kita perhatikan file diatas mengapa hasil filter dari grafik ke 2 berbeda dengan grafik ke 3 & 4? hal tersebut terjadi karena perbedaan penggunaan direct form dalam implementasi tranformasi Z pada filter, Grafik 2 atau hasil Dari FDA tool box menggunakan direct form II sebagai mana ditampilkan ada screenshoot berikut:
Screenshot from 2016-01-31 11:06:25

Sedangkan pada grafik 3 dan 4 kita menggunakan Direct form I, tentunya kita dapat memodifikasi design kita menggunakan Direct form I atau Direct Form II sesuai dengan kebutuhan kita, selain perbedaan pada Direct form, juga terdapat perbedaan pada ordo yang digunakan pada FDA toolboox orde yang digunakan sebanyak 18 sedangkan pada grafik 3&4 menggunakan ordo sebanyak 15. Tentunya kita bisa mendalami lagi mengenai parameter parameter lainnya pada filter digital

file dapat didownload di link berikut:
File Simulink https://www.dropbox.com/s/wn5mo8bqbhgxuif/FilterBPFPro2x1.mdl?dl=0
File mfile https://www.dropbox.com/s/z9k5014zpcbahfy/Set_parameter.m?dl=0

Menggambar kurva 2D, kurva 3D dan menghitung integral pada matlab


contoh soal sebagai berikut (sumber https://www.facebook.com/groups/570918222980206/)
12645270_1218062701556010_5345357511037463031_n

clear, close all, clc
%No1 http://www.mathworks.com/help/matlab/ref/plot.html
x=-10:0.1:10;
y1=sqrt(49+4.*x.^2);
y2=sqrt(64+3.*x.^2);
plot(x,y1),hold on, grid on
plot(x,y2,'r')
%No2 http://www.mathworks.com/help/matlab/ref/plot3.html
t=0:0.1:2*pi;
x=1+cos(t);
y=2+sin(t);
z=1-cos(2.*t);
figure
plot3(x,y,z), grid on
%No3a http://www.mathworks.com/help/symbolic/int.html
syms x y
pretty(int(2*x*y*exp(2*y),y))
%No3b http://www.mathworks.com/help/matlab/ref/integral.html
fun = @(x,y) 10-2.*x.^2-y.^2
q = integral2(fun,-4,5,-5,5)
%No3c http://www.mathworks.com/help/symbolic/diff.html
syms x
diff((1/2)*x*y*exp(2*y),y)
%No3d http://www.mathworks.com/help/symbolic/diff.html
syms x y
diff(diff(exp(-x^3-y)))

Menghitung Korelasi Horizontal Vertical dan Diagonal pada Citra Digital


Korelasi pixel tetangga pada citra digital adalah suatu cara untuk menemukan hubungan nilai antara 2 pixel. Dalam hal ini kita bisa katakan hubungan antara Horizontal Vertical dan Diagonal. Salah satu artikel yang membahas hal tersebut Tang Hongmei; Han Liying; He Yu; Wang Xia, “An improved compound image encryption scheme,” in Computer and Communication Technologies in Agriculture Engineering (CCTAE), 2010 International Conference On , vol.3, no., pp.128-131, 12-13 June 2010
Di artikel tersebut di bagian C Correlation coefficient analysis disebutkan sebagai berikut

Screenshot from 2016-01-18 18:33:34
Screenshot from 2016-01-18 18:37:15

berangkat dari formula dan grafik tersebut, kita dapat menghitung nilai korelasi dan menampilkan nilai korelasi mengggunakan matlab sebagai berikut
sebagai contoh: saya mempunyai 2 images (image original dan image yang sudah terenkripsi) kita ingin mendapatkan nilai korelasi dari image original dan encrypted image (variable r dan r2) serta memplot korelasi antar tetangga tersebut, berikut scriptnya

%horizontal
clear all, close all
imrgb_o=double(imread('kodim23.png'));
imrgb_r=double(imread('Encrypt_DES_kodim23.png'));
imgray_o=sum(imrgb_o,3)/3; 
imgray_r=sum(imrgb_r,3)/3; 
[As Bs]=size(imgray_o);
x=imgray_o;
L=As*Bs;
x_r=reshape(x',1,L)';
y_r=circshift(x_r,-1);
figure4 = figure;
axes4 = axes('Parent',figure4)
hold(axes4,'all');
for i=1:L
    plot(x_r(i),y_r(i)), hold on
end
title('Horizontal Correlation Original Image')
saveas(figure4,'Horizontal Correlation Original Image.png') 
close (figure4)
x_mean=mean(x_r);
y_mean=mean(y_r);
for i=1:L
    A(i,1)=(x_r(i,1)-x_mean)*(y_r(i,1)-y_mean);
end
ConvA=sum(A)/L;
for i=1:L
    DA_x(i,1)=(x_r(i,1)-x_mean).^2;
end
for i=1:L
    DA_y(i,1)=(y_r(i,1)-y_mean).^2;
end
D_x=sum(DA_x)/L;
D_y=sum(DA_y)/L
r=ConvA/(sqrt(D_x*D_y))
%%%%%%%%%%%%%%%%%%%%%%%%%%%
x2=imgray_r;
x2_r=reshape(x2',1,L)';
y2_r=circshift(x2_r,-1);
y2_r(1,1)=0;
figure5 = figure;
axes5 = axes('Parent',figure5)
hold(axes5,'all');
for i=1:L
    plot(x2_r(i),y2_r(i)), hold on
end
title('Horizontal Correlation Encrypted Image by DES')
saveas(figure5,'Horizontal Correlation Encrypted Image by DES.png') 
close (figure5)
x2_mean=mean(x2_r);
y2_mean=mean(y2_r);
for i=1:L
    A2(i,1)=(x2_r(i,1)-x2_mean)*(y2_r(i,1)-y2_mean);
end
ConvA2=sum(A2)/L;
for i=1:L
    DA2_x(i,1)=(x2_r(i,1)-x2_mean).^2;
end
for i=1:L
    DA2_y(i,1)=(y2_r(i,1)-y2_mean).^2;
end
D_x2=sum(DA2_x)/L;
D_y2=sum(DA2_y)/L;
r2=ConvA2/(sqrt(D_x2*D_y2))
save('Konv_horzontal.mat','r','r2')

Vertical Correlation Encrypted Image by DES

Vertical Correlation Original Image

%Vertikal
clear all
imrgb_o=double(imread('kodim23.png'));
imrgb_r=double(imread('Encrypt_DES_kodim23.png'));
imgray_o=sum(imrgb_o,3)/3; 
imgray_r=sum(imrgb_r,3)/3; 
[As Bs]=size(imgray_o);
x=imgray_o;
L=As*Bs;
x_r=reshape(x',1,L)';
y_r=circshift(x_r,-Bs);
figure7 = figure;
axes7 = axes('Parent',figure7)
hold(axes7,'all');
for i=1:L
    plot(x_r(i),y_r(i)), hold on
end
title('Vertical Correlation Original Image')
saveas(figure7,'Vertical Correlation Original Image.png') 
close (figure7)
x_mean=mean(x_r);
y_mean=mean(y_r);
for i=1:L
    A(i,1)=(x_r(i,1)-x_mean)*(y_r(i,1)-y_mean);
end
ConvA=sum(A)/L;
for i=1:L
    DA_x(i,1)=(x_r(i,1)-x_mean).^2;
end
for i=1:L
    DA_y(i,1)=(y_r(i,1)-y_mean).^2;
end
D_x=sum(DA_x)/L;
D_y=sum(DA_y)/L
r=ConvA/(sqrt(D_x*D_y))
%%%%%%%%%%%%%%%%%%%%%%%%%%%
x2=imgray_r;
% x2_r=reshape(x2',1,L)';
% y2_r=circshift(x2_r,-1);
% y2_r(1,1)=0;
x2_r=reshape(x2',1,L)';
y2_r=circshift(x2_r,-Bs);
figure8 = figure;
axes8 = axes('Parent',figure8)
hold(axes8,'all');
for i=1:L
    plot(x2_r(i),y2_r(i)), hold on
end
title('Vertical Correlation Encrypted Image by DES')
saveas(figure8,'Vertical Correlation Encrypted Image by DES.png') 
close (figure8)
x2_mean=mean(x2_r);
y2_mean=mean(y2_r);
for i=1:L
    A2(i,1)=(x2_r(i,1)-x2_mean)*(y2_r(i,1)-y2_mean);
end
ConvA2=sum(A2)/L;
for i=1:L
    DA2_x(i,1)=(x2_r(i,1)-x2_mean).^2;
end
for i=1:L
    DA2_y(i,1)=(y2_r(i,1)-y2_mean).^2;
end
D_x2=sum(DA2_x)/L;
D_y2=sum(DA2_y)/L;
r2=ConvA2/(sqrt(D_x2*D_y2))
save('Konv_vertikal.mat','r','r2')

Horizontal Correlation Encrypted Image by DES

Horizontal Correlation Original Image

%diagonal
clear all
imrgb_o=double(imread('kodim23.png'));
imrgb_r=double(imread('Encrypt_DES_kodim23.png'));
imgray_o=sum(imrgb_o,3)/3; 
imgray_r=sum(imrgb_r,3)/3; 
[As Bs]=size(imgray_o);
x=imgray_o;
L=As*Bs;
x_p=[x(:,:) x(:,1)];
x_p2=[x_p(:,:) ; [x(1,:) x(1,1)] ];
for i=1:As
    for j=1:Bs
    y(i,j)=x_p2(i+1,j+1);
    end
end
x_r=reshape(x',1,L)';
y_r=reshape(y',1,L)';
figure1 = figure;
axes1 = axes('Parent',figure1)
hold(axes1,'all');
for i=1:L
    plot(x_r(i),y_r(i)), hold on
end
title('Diagonal Correlation Original Image')
saveas(figure1,'Diagonal Correlation Original Image.png') 
close (figure1)
x_mean=mean(x_r);
y_mean=mean(y_r);
for i=1:L
    A(i,1)=(x_r(i,1)-x_mean)*(y_r(i,1)-y_mean);
end
ConvA=sum(A)/L;
for i=1:L
    DA_x(i,1)=(x_r(i,1)-x_mean).^2;
end
for i=1:L
    DA_y(i,1)=(y_r(i,1)-y_mean).^2;
end
D_x=sum(DA_x)/L;
D_y=sum(DA_y)/L
r=ConvA/(sqrt(D_x*D_y))
%%%%%%%%%%%%%%%%%%%%%%%%%%%
x2=imgray_r;
x2_p=[x2(:,:) x2(:,1)]
x2_p2=[x2_p(:,:) ; [x2(1,:) x2(1,1)] ]
for i=1:As
    for j=1:Bs
    y2(i,j)=x2_p2(i+1,j+1);
    end
end
x2_r=reshape(x2',1,L)';
y2_r=reshape(y2',1,L)';
figure2 = figure;
axes2 = axes('Parent',figure2)
hold(axes2,'all');
for i=1:L
    plot(x2_r(i),y2_r(i)), hold on
end
title('Diagonal Correlation Encrypted Image by DES')
saveas(figure2,'Diagonal Correlation Encrypted Image by DES.png') 
close (figure2)
x2_mean=mean(x2_r);
y2_mean=mean(y2_r);
for i=1:L
    A2(i,1)=(x2_r(i,1)-x2_mean)*(y2_r(i,1)-y2_mean);
end
ConvA2=sum(A2)/L;
for i=1:L
    DA2_x(i,1)=(x2_r(i,1)-x2_mean).^2;
end
for i=1:L
    DA2_y(i,1)=(y2_r(i,1)-y2_mean).^2;
end
D_x2=sum(DA2_x)/L;
D_y2=sum(DA2_y)/L;
r2=ConvA2/(sqrt(D_x2*D_y2))
save('Konv_diagonal.mat','r','r2')

Diagonal Correlation Encrypted Image by DES

Diagonal Correlation Original Image

Flag Filter / Image Fusion


Pergantian profil image di facebook dengan menyertakan bendera atau yang sering dibilang “flag filter”. sekitar beberapa bulan yang lalu rainbow flag dan sekarang france flag.

bagaimana cara kerja “flag filter”?
“flag filter” dalam bahasa lainnya dikenal dengan image fusion, image fusion ini terdiri dari bermacam macam metode: Simple Average, Maximum Selected High pass filtering, IHS Transform, PCA, Wavelet, dll. Semakin aneh namanya semakin aneh cara kerjanya, lengkapnya bisa digoogle “image fusion”

Sekarang kita coba lihat metode yang paling simple yaitu Simple average. Dari namanya kita sudah bisa tahu bahwa cara kerja nya adalah dengan merata-ratakan.

Dalam Citra Digital setiap pixel di representasikan dengan nilai pixel, gampangnya jika kita punya Citra digital 16 pixel maka ada 16 nilai pixel atau 16×3 nilai pixel (jika citra direprentasikan dalam layer warna)

Contoh:
Citra Background = Ig (dalam hal ini adalah citra flag)
Citra Foreground = In (dalam hal ini adalah citra profil)
Citra Fused = fusedImg (dalam hal ini adalah citra yg sudah terfused)

bgImg=representasi nilai pixel Ig
fgImg=representasi nilai pixel In

jika kita anggap Ig dan In memiliki panjang dan lebar yang sama,
maka setiap nilai pixel yang terfused adalah IfusedImg = (bgImg+fgImg)/2.

Tetapi kita bisa memodifikasi tingkat ketebalan atau tingkat transparansi dari Ig atau In dengan formula sederhana sebagai berikut:
0<=alphaFactor<=1 (semakin tinggi nilai alphaFactor semakin transparan bgImgAlpha (Flag)

fgImgAlpha = alphaFactor .* fgImg;
bgImgAlpha = (1 – alphaFactor) .* bgImg;

berikut script yang dijalankan dimatlab dengan alphaFactor =0.4,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc, clear all, close all
Ig=imread(‘Indonesia_flagx.png’);
If=imread(‘n.png’);

bgImg = double(Ig);
fgImg = double(If);

alphaFactor = 0.4;

fgImgAlpha = alphaFactor .* fgImg;
bgImgAlpha = (1 – alphaFactor) .* bgImg;

fusedImgt = fgImgAlpha + bgImgAlpha;
fusedImg = uint8(fusedImgt);

figure;
subplot(131);imshow(Ig);title(‘BackGround’);
subplot(132);imshow(If);title(‘ForeGround’);
subplot(133);imshow(fusedImg);title(‘Fused’);

figure;imshow(fusedImg)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Screenshot from 2015-11-15 11:04:48