• Tidak ada hasil yang ditemukan

BAB V PENUTUP

5.2 Saran

Beberapa saran yang berguna, baik dalam menggunakan aplikasi ini, ataupun dalam mengembangkan aplikasi yang menggunakan sistem pengenalan pembicara, adalah sebagai berikut:

a. Dalam menggunakan aplikasi Miracle Voice Data Protection, user hendaknya mengingat password yang telah dilakukan pada saat melakukan enkripsi. Hal ini sangat penting, guna mencegah tidak bisanya kita melakukan dekripsi pada file tersebut.

b. Password yang dipilih hendaknya menghindari kata-kata yang mempunyai bunyi desis seperti kata ’basis’, ’histeris’, dan lain lain.

c. Dalam melakukan perekaman suara, baik pada saat dekripsi maupunenkripsi, sebaiknya dilakukan pada kondisi yang tidak terlalu bising.Mikrofon yang anti noise juga disarankan untuk memaksimalkankeakuratan. Kata yang diucapkan pun harus jelas dan keras, agar tidak susah dalam membuka proteksi nantinya.

DAFTAR PUSTAKA

Rabiner,Lawrence dan Jang, Bing Hwang.(1993). Fundamental of Speech Recognition. Prentice Hall, New Jersey.

James Matthews, How Does Speech Recognition Work?

http://www.generation5.org/content/2002/howsrworks.asp

Melvyn J. Hunt, Signal Representation

http://cslu.cse.ogi.edu/HLTsurvey/ch1node5.html Bruce Schneier, Blowfish Encryption

http://www.schneier.com/paper-blowfish-fse.html

LAMPIRAN

LISTING PROGRAM Main Program

Private Sub Form_Load()

If App.PrevInstance = True Then

MsgBox "Tidak dapat menjalakan program yang sama pada saat bersamaan", vbInformation, "MVDP Sudah berjalan"

Exit Sub PathKu = App.Path & "\Enskrip\"

Else

If GetINI("MVDP SETTING", "WAVE FILE1") = "" Then

Call SetINI("MVDP SETTING", "WAVE FILE1", App.Path &

"\Password.wav")

Call SetINI("MVDP SETTING", "WAVE FILE2", App.Path &

"\Verifikasi.wav") End If

NamaFileWave1 = GetINI("MVDP SETTING", "WAVE FILE1") NamaFileWave2 = GetINI("MVDP SETTING", "WAVE FILE2") SettingSkala picWav1, 0, 1000, -500, 500

SettingSkala picWav2, 0, 1000, -500, 500 optIsolate.value = True

pbar.Max = 100 pbar.Min = 0 Cnt = 0

FrameAwal.Visible = True FrameDeskripsi.Visible = False

FrameEnskripsi.Visible = False Dim backPic As String

backPic = App.Path & "\background.jpg"

If FileAda(backPic) Then

imgBack.Picture = LoadPicture(backPic) End If

' Bicara "Selamat datang di Miracle Voice Data Protection"

' Bicara "Untuk memulai program, anda dapat memilih 2 Operasi yang terdapat di form ini, yaitu operasi Enskripsi dan deskripsi"

End Sub Enkripsi File

Public Function EncryptFile(inFIle As String, OutFile As String, Overwrite As Boolean, Optional Key As String, Optional OutputIn64 As Boolean) As Boolean 'Panggil Fungsi class_Initialize

Class_Initialize

If FileExist(OutFile) = True And Overwrite = False Then

'Jika file tujuan ada dan variable Overwrite = false maka proses enskripsi di

'Enskripsikan semua data yang ada di dalam variable buffer Call EncryptByte(Buffer(), Key)

'Apabila file tujuan sudah ada maka akan kita hapus If FileExist(OutFile) = True Then Kill OutFile FileO = FreeFile

'Hapus isi variable-variable yang telah digunakan Erase Buffer(): Key = "": inFIle = "": OutFile = ""

Exit Function errorhandler:

'Hapus isi variable-variable yang telah digunakan Erase Buffer(): Key = "": inFIle = "": OutFile = ""

EncryptFile = False End Function

Enkripsi Byte

Public Sub EncryptByte(byteArray() As Byte, Optional Key As String) 'Inisialisasi semua variable yang akan digunakan

Dim Offset As Long, OrigLen As Long, LeftWord As Long, RightWord As Long, CipherLen As Long, CipherLeft As Long, CipherRight As Long, CurrPercent As Long, NextPercent As Long

'Cek apakah kunci enskripsi yang digunakan ddi masukan atau tidak oleh user, apabila tidak maka kita menggunakan kunci default

If (Len(Key) > 0) Then Me.Key = Key

'Set Variable OrigLen agar sama panjang dengan ByteArray OrigLen = UBound(byteArray) + 1

'isi variable Chipherlen dengan data OrigLen +12 CipherLen = OrigLen + 12

'Jika nilai ChiperLen Modules 8 tidak kosong maka nilai ChiperLen = Chiperlen +8 -(CipherLEn Mod 8)

If (CipherLen Mod 8 <> 0) Then CipherLen = CipherLen + 8 - (CipherLen Mod 8)

'Reset varable ByteArray agar sama dengan variable ChiperLen ReDim Preserve byteArray(CipherLen - 1)

'Copy isi data variable bytearray(0) sepanjang OrigLen ke dalam variable ByteArray(12)

Call CopyMem(byteArray(12), byteArray(0), OrigLen) Call CopyMem(byteArray(8), OrigLen, 4)

Call Randomize

Call CopyMem(byteArray(0), CLng(2147483647 * Rnd), 4) Call CopyMem(byteArray(4), CLng(2147483647 * Rnd), 4) 'Mulai proses enskripsi

For Offset = 0 To (CipherLen - 1) Step 8

'Ambil data dari variable pada blok di sebelah kiri dari variable byterarray Call GetWord(LeftWord, byteArray(), Offset) Call EncryptBlock(LeftWord, RightWord)

'Masuakn nilai di hasil ensripsi blok kiri tadi ke dalam variable bytearray Call PutWord(LeftWord, byteArray(), Offset)

'Masuakn niali hasil Ensripsi blok kanan ke dalam variable ByteArray lagi Call PutWord(RightWord, byteArray(), Offset + 4)

If (CurrPercent <> 100) Then RaiseEvent Progress(100) End Sub

Deskripsi File

Public Function DecryptFile(inFIle As String, OutFile As String, Overwrite As Boolean, Optional Key As String, Optional IsFileIn64 As Boolean) As Boolean On Error GoTo errorhandler

If FileExist(inFIle) = False Then

DecryptFile = False Exit Function End If

DoEvents

If FileExist(OutFile) = True And Overwrite = False Then DecryptFile = False

Call DecryptByte(Buffer(), Key)

If FileExist(OutFile) = True Then Kill OutFile Open OutFile For Binary As #FileO

Public Sub DecryptByte(byteArray() As Byte, Optional Key As String) On Error GoTo errorhandler Call DecryptBlock(LeftWord, RightWord)

LeftWord = LeftWord Xor CipherLeft RightWord = RightWord Xor CipherRight

Call GetWord(CipherLeft, byteArray(), Offset)

Call CopyMem(OrigLen, byteArray(8), 4)

If (CipherLen - OrigLen > 19) Or (CipherLen - OrigLen < 12) Then Call Err.Raise(vbObjectError, , "Incorrect size descriptor in Blowfish decryption") Call CopyMem(byteArray(0), byteArray(12), OrigLen)

ReDim Preserve byteArray(OrigLen - 1)

If CurrPercent <> 100 Then RaiseEvent Progress(100)

errorhandler:

Y() As Double, Optional Col = vbYellow, Optional AllWave As Boolean = True) Dim i As Long, buff As Long, Xrate As Double, Yrate As Double

Dim LastX As Double, LastY As Double, Min As Double, Max As Double Dim CurrX As Double, j As Long, imin As Long, imax As Long

'Not using other variables just for lack of will:

'values(0)= Titik awal

i = i + 1: ReDim Preserve values(i)

'Pengulangan untuk mengisolasikan bagian terpenting dari file wav

If (AllWave = False And optIsolate.value = True) Or (AllWave = False And

'Masukan bagian terpenting dari file wav ke dalam gambar amplitudo Xrate = (.ScaleWidth / (imax - imin))

Yrate = (Max - Min) / (.ScaleTop)

If Err.Number = 95 Then Resume Next End Sub

Test1 = Perbandingan_DariTitikKeTitik(Y1, Y2) Test2 = Perbandingan_Statis(Y1, Y2)

If Abs(UBound(values1) - UBound(values2)) > 300 Then Verifikasi = False:

Exit Function

' If Perbandingan_DariTitikKeTitik(Y1, Y2) >= Cnt And (Abs(values1(3) -values2(3)) < 10) And (Abs(values1(4) - values2(4)) < 10) And _

' (Abs(ArithmeticMean(Y1, values1(0), values1(1)) - ArithmeticMean(Y2, values2(0), values2(1))) < 6) And _

'(Abs(StandardDeviation(Y1, values1(0), values1(1)) - StandardDeviation(Y2, values2(0), values2(1))) < 10) Then

Dokumen terkait