Enkripsi Dan Dekripsi File Dengan Algoritma Rijndael

Enkripsi Dan Dekripsi File Dengan Algoritma Rijndael

Enkripsi dan Dekripsi File dengan Algoritma Rijndael – Halo teman blogger semuanya, kembali lagi bersama saya guzko di blog tutorial yang sederhana ini. Semoga blog saya ini mampu menawarkan manfaat ataupun ide bagi teman blogger semuanya.


Seperti judul saya diatas yaitu Enkripsi dan Dekripsi File dengan Algoritma Rijndael, kali ini saya akan membagikan tutorial kepada teman blogger semuanya.


(Baca Juga : Enkripsi Dekripsi Teks Sederhana)


Aplikasi enkripsi dan dekripsi yang akan kita buat kali ini menggunakan algoritma rijndael. Sebenarnya banyak algoritma yang mampu digunakan tapi untuk tutorial kali ini, saya share ihwal algoritma rijndael dulu.


Algoritma Rijndael


Pada rahun 1997,National Institute of Standard and Technology (NIST) of United States mengeluarkan Advanced Encryption Standard (AES) untuk menggantikan Data Encryption Standard (DES). AES dibangun dengan maksud untuk mengamankan pemerintahan diberbagi bidang. Algoritma AES di design menggunkan blok chiper minimal dari blok 128 bit input dan mendukung ukuran 3 kunci (3-key-sizes), ialah kunci 128 bit, 192 bit, dan 256 bit. Pada Agustus 1998, NIST mengumumkan bahwa ada 15 tawaran AES yang telah diterima dan dievaluasi, setelah mengalami proses seleksi terhadap algoritma yang masuk.
Pada bulan Oktober 2000, NIST mengumumkan bahwa Rijndael sebagai algoritma yang terpilih untuk standar AES yang baru. Baru pada februari 2001 NIST
mengirimkan draff kepada Federal Information Processing Standards (FIPS) untuk standar AES. Kemudian pada 26 November 2001, NIST mengumumkan produk simpulan dari Advanced Encryption Standard.


sumber : http://www.academia.edu/7426961/Algoritma_Advanced_Encryption_Standard_AES_


Baik itu tadi penjelasan singkat saya ihwal Rijndael, algoritma yang akan kita gunakan untuk membuat aplikasi enkripsi dan dekripsi ini. Sekarang waktunya kita membuat aplikasinya :


1. Buat New Project
Buka visual studio teman blogger dan buat sebuah project baru. jikalau sudah, kemudian design aplikasinya mirip gambar berikut ini. Sebenarnya sih design mampu terserah teman blogger berkreasi. Berikut design yang saya buat :




Enkripsi Dan Dekripsi File Dengan Algoritma Rijndael


Komponen yang terdapat pada design tersebut :



  • 1 tab control

  • 8 textbox

  • 6 button

  • 1 picturebox

  • 1 openfiledialog

  • 1 folderbrowsedialog


untuk property name nya mirip ini :

























































































KomponenProperty NameFungsi
ButtonbtnBrowseMemilih lokasi file untuk di-enkripsi
btnChangeMerubah lokasi default file hasil enkripsi
btnEnkripsiuntuk melakukan proses enkripsi file yang ditentukan
btnBrowse2Memilih lokasi file untuk di-enkripsi
btnChange2Merubah lokasi default file hasil dekripsi
btnDekripsiUntuk melakukan proses dekripsi file yang ditentukan
TextboxtxtEnkripsiMenampilkan lokasi file untuk di-enkripsi
txtChangeMenampilkan lokasi default hasil file enkripsi
txtPasswordField untuk menginputkan password, dimana pada waktu nanti akan di-dekripsi maka user akan diminta untuk menginputkan password
txtKonfirmkonfirmasi password enkripsi
txtDekripsiMenampilkan lokasi file untuk di-dekripsi
txtChange2Menampilkan lokasi default hasil dekripsi file
txtPass2Menginputkan password yang telah di setting sebelumnya pada waktu enkripsi file (pilihan ini optional)
txtKonfirm2konfirmasi password
Tab ControlTablControl1Untuk memudahkan user melakukan perpindahan hidangan dari enkripsi ke dekripsi
Picture BoxPicturebox1Menampilkan preview dari file yang dipilih
Open File DialogOpenfiledialogUntuk melakukan browse file enkripsid an dekripsi
Folder Browse DialogFolderbrowsedialog1Untuk memilih lokasi file gres hasil penyimpanan enkripsi / dekripsi


2. Tahap Peng-codingan
setelah selesai melakukan design mirip diatas, kini dikala kita melakukan tahap peng-codingan. Untuk yang pertama, kita perlu melakukan import reference terlebih dahulu , codenya mirip berikut :


Imports System Imports System.IO Imports System.Security Imports System.Security.Cryptography 

setelah itu, selanjutnya tuliskan instruksi untuk mendeklarasikan variable secara global yang akan digunakan untuk proses. code deklarasi variable globalnya mirip berikut :


Dim strFileToEncrypt As String     Dim strFileToDecrypt As String     Dim strOutputEncrypt As String     Dim strOutputDecrypt As String     Dim fsInput As System.IO.FileStream     Dim fsOutput As System.IO.FileStream 

lanjutkan dengan menuliskan instruksi berikut ini, ialah private function untuk membuat password dan menyimpannya. Kodenya mirip berikut ini :


Private Function CreateKey(ByVal strPassword As String) As Byte()         'konversi strPassword ke array dan simpan pada chrData         Dim chrData() As Char = strPassword.ToCharArray         'menggunakan variable intLength untuk menerima size dari strPassword         Dim intLength As Integer = chrData.GetUpperBound(0)         'membuat variable bytDataToHash dan membuat size nya sama dengan chrData         Dim bytDataToHash(intLength) As Byte          'menggunakan fungsi perulangan untuk mengkonversi dan menyimpan chrData kedalam bytDataToHash         For i As Integer = 0 To chrData.GetUpperBound(0)             bytDataToHash(i) = CByte(Asc(chrData(i)))         Next          'mendeklarasikan jenis hash yang akan digunakan         Dim SHA512 As New System.Security.Cryptography.SHA512Managed         'mendeklarasikan bytResult, hash bytDataToHash dan simpan dalam bytResult         Dim bytResult As Byte() = SHA512.ComputeHash(bytDataToHash)         'mendeklarasikan bytKey(31). variable ini akan menyimpan sebanyak 256 bits         Dim bytKey(31) As Byte          For i As Integer = 0 To 31             bytKey(i) = bytResult(i)         Next          Return bytKey     End Function 

kemudian lanjutkan dengan menginputkan private function berikut ini :


Private Function CreateIV(ByVal strPassword As String) As Byte()         Dim chrData() As Char = strPassword.ToCharArray         Dim intLength As Integer = chrData.GetUpperBound(0)         Dim bytDataToHash(intLength) As Byte          For i As Integer = 0 To chrData.GetUpperBound(0)             bytDataToHash(i) = CByte(Asc(chrData(i)))         Next          Dim SHA512 As New System.Security.Cryptography.SHA512Managed         Dim bytResult As Byte() = SHA512.ComputeHash(bytDataToHash)         Dim bytIV(15) As Byte          For i As Integer = 32 To 47             bytIV(i - 32) = bytResult(i)         Next          Return bytIV     End Function 

lanjutkan dengan menginputkan instruksi function untuk melakukan proses enkripsi dan dekripsi. Kodenya berikut ini :


Private Sub EncryptOrDecryptFile(ByVal strInputFile As String, _                                      ByVal strOutputFile As String, _                                      ByVal bytKey() As Byte, _                                      ByVal bytIV() As Byte, _                                      ByVal Direction As CryptoAction)         Try              fsInput = New System.IO.FileStream(strInputFile, FileMode.Open, _                                                FileAccess.Read)             fsOutput = New System.IO.FileStream(strOutputFile, FileMode.OpenOrCreate, _                                                 FileAccess.Write)             fsOutput.SetLength(0)              Dim bytBuffer(4096) As Byte             Dim lngBytesProcessed As Long = 0             Dim lngFileLength As Long = fsInput.Length             Dim intBytesInCurrentBlock As Integer             Dim csCryptoStream As CryptoStream             Dim cspRijndael As New System.Security.Cryptography.RijndaelManaged             pbStatus.Value = 0             pbStatus.Maximum = 100              Select Case Direction                 Case CryptoAction.ActionEncrypt                     csCryptoStream = New CryptoStream(fsOutput, _                     cspRijndael.CreateEncryptor(bytKey, bytIV), _                     CryptoStreamMode.Write)                  Case CryptoAction.ActionDecrypt                     csCryptoStream = New CryptoStream(fsOutput, _                     cspRijndael.CreateDecryptor(bytKey, bytIV), _                     CryptoStreamMode.Write)             End Select              While lngBytesProcessed < lngFileLength                 intBytesInCurrentBlock = fsInput.Read(bytBuffer, 0, 4096)                 csCryptoStream.Write(bytBuffer, 0, intBytesInCurrentBlock)                 lngBytesProcessed = lngBytesProcessed + CLng(intBytesInCurrentBlock)                 pbStatus.Value = CInt((lngBytesProcessed / lngFileLength) * 100)             End While              csCryptoStream.Close()             fsInput.Close()             fsOutput.Close()              If Direction = CryptoAction.ActionEncrypt Then                 Dim fileOriginal As New FileInfo(strFileToEncrypt)                 fileOriginal.Delete()             End If              If Direction = CryptoAction.ActionDecrypt Then                 Dim fileEncrypted As New FileInfo(strFileToDecrypt)                 fileEncrypted.Delete()             End If              Dim Wrap As String = Chr(13) + Chr(10)             If Direction = CryptoAction.ActionEncrypt Then                 MsgBox("Enkripsi Selesai" + Wrap + Wrap + _                         "Total Proses bytes = " + _                         lngBytesProcessed.ToString, _                         MsgBoxStyle.Information, "Guzko Tutorial")                  pbStatus.Value = 0                 txtEnkripsi.Text = "Klik Browse untuk load file."                 txtPassword.Text = ""                 txtKonfirm.Text = ""                 txtChange.Text = ""                 btnChange.Enabled = False                 btnEnkripsi.Enabled = False              Else                 MsgBox("Dekripsi Selesai" + Wrap + Wrap + _                        "Total Proses bytes = " + _                         lngBytesProcessed.ToString, _                         MsgBoxStyle.Information, "Guzko Tutorial")                  pbStatus.Value = 0                 txtDekripsi.Text = "Klik Browse untuk load file."                 txtPass2.Text = ""                 txtKonfirm2.Text = ""                 txtChange2.Text = ""                 btnChange2.Enabled = False                 btnDekripsi.Enabled = False             End If               'Catch file not found error.         Catch When Err.Number = 53 'if file not found             MsgBox("Pastikan lokasi dan file" + _                     "benar dan file ada.", _                      MsgBoxStyle.Exclamation, "Kesalahan lokasi file (Guzko Tutorial)")          Catch             fsInput.Close()             fsOutput.Close()              If Direction = CryptoAction.ActionDecrypt Then                 Dim fileDelete As New FileInfo(txtChange2.Text)                 fileDelete.Delete()                 pbStatus.Value = 0                 txtPass2.Text = ""                 txtKonfirm2.Text = ""                  MsgBox("Pastikan password yang diinputkan benar dan sesuai" + _                         MsgBoxStyle.Exclamation, "Password Salah (Guzko Tutorial)")             Else                 Dim fileDelete As New FileInfo(txtChange.Text)                 fileDelete.Delete()                  pbStatus.Value = 0                 txtPassword.Text = ""                 txtKonfirm.Text = ""                  MsgBox("File ini tidak mampu di-enkripsi.", _                         MsgBoxStyle.Exclamation, "Erorr (Guzko Tutorial)")              End If          End Try     End Sub 

instruksi diatas ialah fungsi-fungsi dan global varible yang merupakan inti instruksi dari aplikasi ini. Jika sudah selesai membuat instruksi diatas, lanjutkan dengan klik ganda pada btnBrowse dan inputkan instruksi berikut ini :


OpenFileDialog.FileName = ""         OpenFileDialog.Title = "Pilih file untuk di-enkripsi"         OpenFileDialog.InitialDirectory = "C:\"         OpenFileDialog.Filter = "All Files (*.*) | *.*"          Try             If OpenFileDialog.ShowDialog = DialogResult.OK Then                 strFileToEncrypt = OpenFileDialog.FileName                 txtEnkripsi.Text = strFileToEncrypt                  Dim iPosition As Integer = 0                 Dim i As Integer = 0                  While strFileToEncrypt.IndexOf("\"c, i) <> -1                     iPosition = strFileToEncrypt.IndexOf("\"c, i)                     i = iPosition + 1                 End While                  strOutputEncrypt = strFileToEncrypt.Substring(iPosition + 1)                 Dim S As String = strFileToEncrypt.Substring(0, iPosition + 1)                 strOutputEncrypt = strOutputEncrypt.Replace("."c, "_"c)                 txtChange.Text = S + strOutputEncrypt + ".encrypt"                 btnEnkripsi.Enabled = True                 btnChange.Enabled = True                  PictureBox1.Image = Image.FromFile(OpenFileDialog.FileName)             End If         Catch ex As Exception          End Try 

Lakukan juga klik ganda pada btnBrowse2, inputkan instruksi dibawah ini :


OpenFileDialog.FileName = ""         OpenFileDialog.Title = "Pilih file untuk di-dekripsi"         OpenFileDialog.InitialDirectory = "C:\"         OpenFileDialog.Filter = "File enkripsi (*.encrypt) | *.encrypt"          'Find out if the user chose a file.         If OpenFileDialog.ShowDialog = DialogResult.OK Then             strFileToDecrypt = OpenFileDialog.FileName             txtDekripsi.Text = strFileToDecrypt             Dim iPosition As Integer = 0             Dim i As Integer = 0              While strFileToDecrypt.IndexOf("\"c, i) <> -1                 iPosition = strFileToDecrypt.IndexOf("\"c, i)                 i = iPosition + 1             End While              strOutputDecrypt = strFileToDecrypt.Substring(0, strFileToDecrypt.Length - 8)             Dim S As String = strFileToDecrypt.Substring(0, iPosition + 1)             strOutputDecrypt = strOutputDecrypt.Substring((iPosition + 1))             txtChange2.Text = S + strOutputDecrypt.Replace("_"c, "."c)             btnDekripsi.Enabled = True             btnChange2.Enabled = True          End If 

Pada btnChange, klik juga ganda dan inputkan instruksi berikut ini :


FolderBrowserDialog.Description = "Pilih folder untuk lokasi enkripsi file"         If FolderBrowserDialog.ShowDialog = DialogResult.OK Then             txtChange.Text = FolderBrowserDialog.SelectedPath + _                                          "\" + strOutputEncrypt + ".encrypt"         End If 

Lakukan hal yang sama pada btnChange2 dengan klik ganda dan inputkan instruksi berikut :


FolderBrowserDialog.Description = "Pilih folder untuk lokasi dekripsi file"         If FolderBrowserDialog.ShowDialog = DialogResult.OK Then             txtChange2.Text = FolderBrowserDialog.SelectedPath + _                                          "\" + strOutputDecrypt.Replace("_"c, "."c)         End If 

demikian instruksi singkatnya dari aplikasi ini, untuk instruksi selengkapnya mampu teman blogger download pada link yang telah saya sediakan dibawah ini. Berikut gambar dibawah ini merupakan hasil dari aplikasi yang kita buat Enkripsi File :


Enkripsi Dan Dekripsi File Dengan Algoritma Rijndael

Enkripsi Dan Dekripsi File Dengan Algoritma Rijndael

Dekripsi File :


Enkripsi dan Dekripsi File dengan Algoritma Rijndael. Semoga tutorial ini mampu menawarkan manfaat bagi teman blogger untuk melindungi file yang rahasia di komputer atau laptop atau mungkin juga dengan melihat aplikasi sederhana ini mampu menawarkan teman blogger ide untuk berkarya membuat aplikasi yang lebih canggih lagi. Sekian dulu tutorial dari saya, untuk mendownload source code aplikasi ini mampu pada link dibawah ini. Kita berjumpa lagi di lain waktu dengan tutorial yang berbeda. seee...uuuu...





Sumber http://guz-kopyok.blogspot.com/


Postingan populer dari blog ini

Cara Mengatasi Xampp Phpmyadmin Error

Mengatasi Port Yang Bentrok Di Windows

Membuat Aplikasi Barcode Dengan Java Netbeans