Tuesday, May 29, 2012

Ekripsi data 2 arah pada VB.net 2008

Terkadang muncul beberapa ide baru yang terpikirkan ketika menrancang sebuah software baru. Salah satu ide yang terlintas adalah melakukan enkripsi 2 arah pada file konfigurasi. Ide ini muncul ketika ingin melakukan penyimpanan data konfigurasi (file .ini). Karena data yang disimpan adalah data akun dan password dari database, oleh karena itu diperlukan adanya enkripsi 2 arah yang paling tidak dapat membantu dalam menyelesaiakan permasalahan ini. Memang source code ini bukan aku yang membuat, tetapi mengambil dari beberapa forum dan blog pribadi orang lain.

sumber source code :
http://social.msdn.microsoft.com/Forums/da-DK/vblanguage/thread/401012c7-91e3-4eee-9e42-e5936a1afe61
http://www.dotnetspider.com/resources/24439-Encryption-Decryption-VB-Net.aspx
http://www.vbforums.com/showthread.php?t=559853

Berikut ini contoh program enkripsi 2 arah.
    Private Shared Function Encrypt(ByVal strText As String, ByVal strEncrKey As String) As String
        Dim IV() As Byte = {&H12, &H34, &H56, &H78, &H90, &HAB, &HCD, &HEF}
        Try
            Dim bykey() As Byte = System.Text.Encoding.UTF8.GetBytes(Microsoft.VisualBasic.Left(strEncrKey, 8))
            Dim InputByteArray() As Byte = System.Text.Encoding.UTF8.GetBytes(strText)
            Dim des As New DESCryptoServiceProvider
            Dim ms As New MemoryStream
            Dim cs As New CryptoStream(ms, des.CreateEncryptor(bykey, IV), CryptoStreamMode.Write)
            cs.Write(InputByteArray, 0, InputByteArray.Length)
            cs.FlushFinalBlock()
            Return Convert.ToBase64String(ms.ToArray())
        Catch ex As Exception
            Return ex.Message
        End Try
    End Function

    Private Shared Function Decrypt(ByVal strText As String, ByVal sDecrKey As String) As String
        Dim IV() As Byte = {&H12, &H34, &H56, &H78, &H90, &HAB, &HCD, &HEF}
        Dim inputByteArray(strText.Length) As Byte
        Try
            Dim byKey() As Byte = System.Text.Encoding.UTF8.GetBytes(Microsoft.VisualBasic.Left(sDecrKey, 8))
            Dim des As New DESCryptoServiceProvider
            inputByteArray = Convert.FromBase64String(strText)
            Dim ms As New MemoryStream
            Dim cs As New CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write)
            cs.Write(inputByteArray, 0, inputByteArray.Length)
            cs.FlushFinalBlock()
            Dim encoding As System.Text.Encoding = System.Text.Encoding.UTF8
            Return encoding.GetString(ms.ToArray())
        Catch ex As Exception
            Return ex.Message
        End Try
    End Function

Sedangkan untuk penggunaannya, dapat gunakan cara berikut ini :

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        TextBox2.Text = Encrypt(TextBox1.Text, "12345678")
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        TextBox4.Text = Decrypt(TextBox3.Text, "12345678")
    End Sub

Selain itu, jangan lupa untuk memasukan file include / imports

Imports System.Security.Cryptography
Imports System.IO


Pada perintah ini memang diharuskan mengisikan kata kunci yang akan membantu dalam proses enkripsi data agar tidak dengan mudah diketehui orang lain. Pengisikan kata kunci ini minimal adalah 8 karakter. Karakter yang digunakan dalam proses encrypt dan decrypt harus sama.
Berikut ini contoh program enkripsi 2 arah yang dibuat dengan menggunakan VB.net 2008

Wednesday, May 23, 2012

[RattoSoft] Software sinkronisasi data penjualan online dengan database lokal melalui jalur FTP



Software ini aku bikin karena kebutuhan akan informasi data yang real time antara data penjualan online dengan data penjualan offline (toko). Software ini memang benar-benar custom (belum tentu sesuai dengan kebutuhan orang lain) karena memang software ini disesuaikan dengan kebutuuhan Sistem Informasi di tempat aku bekerja. Menggunakan jalur FTP untuk mengambil data xml dari webserver dan kemudian di simpan ke dalam local folder untuk kemudian diolah agar dapat masuk ke dalam database Firebird.



Monday, May 21, 2012

[RattoSoft] Software kasir untuk Depot



Salah satu lagi program "jadul" yang telah aku bikin untuk sebuah depot di Surabaya. Sebenarnya tampilan dari software ini cukup jelek (di pakai sendiri oleh orang tua), so tidak perlu tampilan yang bagus, tetapi fitur yang menakjubkan..hahaaa...
Selain bisa cetak nota, lihat pendapatan dalam 1 hari/minggu/tahun, software ini juga mampu menampilkan secara otomatis alamat dari pelanggan yang sedang telpon untuk memesan makan. Hal ini mempersingkat proses pemesanan, karena pelanggan tidak di tanya berulang-ulang alamat pengiriman jika si pelanggan tersebut sudah pernah melakukan pemesanan. Database yang digunakan adalah Ms Access. Kenapa memilih ms access, karena tidak perlu multi user dan program hanya dijalankan pada 1 PC saja. So, kalo bisa sederhana, kenapa rumit. Lagi pula program sederhana dan tidak perlu perancangan database yang kompleks..
hahaaa...

Sunday, May 20, 2012

[RattoSoft] Software kasir untuk cafe



Software ini merupakan salah satu dari beberapa software berbasis Desktop Based yang telah aku buat. Software ini dibuat dengan menggunakan Visual Basic 6. Tampilan dari software ini memang tampak sangat kuno dan sederhana. Yupzzz...tepat sekali. Waktu itu masih sedikit sekali pengalaman dalam pembuatan software seperti ini (sekitar 3 tahun yang lalu). Sedikitnya waktu yang diberikan dan tidak adanya akses internet yang stabil (pembuatan software ini dilakukan di kota Ambawara) membuat software ini tampat kuno dan tidak disertai dengan tampilan grafis yang bagus.

Pada tampilan utama terdapat informasi tentang meja yang telah terisi para pelanggan.


Pada menu pemilihan masakan, terdapat beberapa kategori dari jenis masakan yang dijual, misal Ayam, Nasi, Bakmie, dll. Dari kategori ini terbagi menjadi beberapa sub bagian lagi.


Software ini juga menyediakan fitur cetak nota dengan menggunakan printer dot-matrix. Pada waktu pengimplementasian, digunakan printer LX-300.


Terdapat juga fitur untuk mencetak slip gaji pegawai berdasarkan dari jumlah presensi yang disimpan di dalam database, pengaturan tax, diskon, dll.
Software ini bersifat custom, sehingga tidak semua kafe cocok menggunakan software ini. Lagi pula software ini terlihat kuno, jadi ya tinggal kenangan saja...tanpa ada modikasi ataupun penambahan fitur2 baru. Lebih enak bikin software berbasis OOP saja, lebih mudah dalam penggabungan beberapa fitur2 baru...
hahaaa.....

[Rattonics] Modul pendeteksi objek yang mampu mengeluarkan suara manusia ataupun musik.


Cukup banyak sensor yang dapat digunakan untuk mendeteksi adanya objek atau halangan.
Sebagai contoh, sensor inframerah, sensor ultrasonik, PIR (passive infrared), radar ,dll. Pada aplikasi kali ini, saya menggunakan sensor ultrasonik produksi Innovative Electronics yang mampu mengukur jarak / mendeteksi adanya halangan sampai dengan 6m.
Sebagai output suara, saya menggunakan IC perekam suara, yaitu ISD2560. IC ini mampu mereka suara, seperti suara manusia, lagu dan beberapa jenis input suara yang lain. Kemudian hasil rekaman suara tersebut dapat dimainkan kembali melalui sebuah speaker kecil (4 Ohm) tanpa bantuan rangkaian penguat sinyal (amplifier).


Sebagai controller utama, digunakan ATtiny2313 yang berfungsi sebagai "otak" dari modul ini. Mikrokontroler ini akan mengambil data dari sensor ultrasonics dan kemudian diolah dan dijadikan referensi data dalam mengaktifkan suara.

[Rattonics] Kendali Lampu berbasis TLP-RLP 433,92 MHz





Ini merupakan salah satu proyek yang saya rancang untuk mengendalikan 2 buah lampu dengan menggunakan sebuah PC untuk mengatur hidup atau matinya kedua lampu tersebut melalui Radio Frekuensi / Wireless

Implementasi pengenalan kata pada atmega162 untuk mengontrol gerak robot mobil


Video ini merupakan sebuah robot mobil yang mampu digerakan maju, mundur, kanan, kiri dan berhenti berdasarkan dari perintah suara manusia. Suara yang didapat dari sebuah mikrofon diolah oleh mikrokontroler ATmega162 dengan memasukan algoritma Hidden Markov dan Linear Predictive Coding (LPC). Sistem ini saya rancang beberapa tahun lalu sebagai syarat kelulusan dari Universitas Kristen Petra Surabaya.



Friday, May 18, 2012

Mengubah mouse cordless menjadi wired

 Dulu tidak terpikirkan sama sekali untuk menggunakan mouse cordless. Selain bukan gamer ataupun penyuka kerapian di meja komputer, mouse cordless masih tergolong cukup mahal pada waktu itu. Semua berubah ketika sang kakak yang memberikan aku sebuah mouse cordless merk Logitech. Pada awalnya menyenangkan menggunakan mouse ini karena tidak diganggu dengan kabel yang malang melintang di atas meja. Setelah beberapa bulan pemakaian, baru terasa penggunaan baterai yang cukup boros.

Tuesday, May 8, 2012

Cara penulisan dan pembacaan file ".ini" sebagai file konfigurasi pada VB.net 2008

 
Pada setiap pembuatan program (berbasis Web, Desktop, Mobile ataupun program lainya), ada kalanya kita perlu untuk menyimpan beberapa konfigurasi yang telah dilakukan oleh user, sehingga user tidak perlu melakukan pengaturan ulang kembali. Sebagai contoh :
  • user melakukan pengaturan lebar kolom dari datagrid yang sebelumnya 90 menjadi 180.
  • mengubah bahasa dari inggris ke indonesia, ataupun sebaliknya
  • mengubah urutan
  • dll
Selain untuk menyimpan konfigurasi yang dilakukan oleh user, penyimpanan ini dapat berfungsi sebagai database sederhana yang mampu meringankan kerja dari program tersebut. Sebagai contoh :
  • penyimpanan bahasa untuk keperluan fitur multi language
  • penyimpanan data
  • dll

Setelah mengetahui fungsi dari penyimpanan konfigurasi, maka terdapat banyak cara agar hal ini dapat direalisasikan, Berikut ini beberapa contoh yang sering digunakan :
  • Penggunaan RAM sebagai media penyimanan = Pada umumnya konfigurasi disimpan di dalam variable yang akan di load ketika program di jalankan. Penyimpanan jenis ini tidak memungkinkan untuk melakukan penggatian isi dari konfigurasi tersebut secara permanen. Isi dari konfigurasi dapat diganti pada saat program berjalan, tetapi jika program ditutup dan dijalankan kembali, maka konfigurasi akan kembali seperti awal.
  • Penggunaan file tambahan sebagai media penyimanan = Pada umumnya konfigurasi disimpan di dalam sebuah file dengan berbagai macam jenis file. Beberapa contoh yang sering digunakan adalah .conf, .ini ataupun format file buatan sendiri. Penyimpanan jenis ini memungkinkan untuk melakukan penggatian isi dari konfigurasi tersebut. Program akan membaca konfigurasi dari file tersebut dan kemudian baru menyimpan ke dalam RAM. Jika ada perubahan, maka program akan mengambil data tersebut dan disimpan ke dalam file konfigurasi.
Pada kesempatan kali ini, akan coba dibahas perihal penggunaan file .ini untuk menggati bahasa dari tampilan program yang dikembangkan dengan menggunakan VB.net 2008.


Program ini terdiri dari 3 file utama, yaitu
  1. Form1.vb : merupakan tampilan utama dari contoh program ini.
  2. IniFile.vb : merupakan class yang berisikan sub rutin yang berfungsi untuk membaca, dan menuliskan kembali konfigurasi.
  3. Language.vb : merupakan class yang berisikan variable-variable yang akan digunakan pada Form1.vb dan class IniFile.vb.
Ketika program pertama kali dijalankan, maka akan muncul Form1 yang berisikan informasi dalam bahasa Indonesia.



Jika ingin mengganti dengan bahasa inggris, tekan RadioButton "English", maka secara otomatis keterangan pada Form1 akan berubah dalam bahasa Inggris.



Apabila ingin mengganti keterangan tesrebut, dapat tekan tombol yang berlabelkan ">" pada sebelah kanan form, maka Form1 akan melebar dan akan menampilkan beberapa textbox yang beriskan tulisan yang merupakan keterangan untuk Form1 dalam bahasa Indonesia dan Inggris.



Semua keterangan ini disimpan di dalam file yang bernama Config.ini. File ini dapat ditemukan di folder yang sama dimana program exe ini berada. "..\FileConfig\FileConfig\bin\Debug\"



Bagaimana? mudah bukan?
Silahkan unduh contoh program ini.
Selamat mencoba!!!