Senin, 15 Agustus 2016

Perbedaan Encoding, Encryption, Hashing dan Obfuscation

Pada dunia ICT (Information Communication and Technologies) yang telah kita ketahui. Tidak jarang kita menemukan istilah - istilah baru saat kita belajar atau membaca suatu artikel terkait dunia ICT. Bahkan kita juga sering menemui istilah yang antara istilah satu dengan istilah lainnya seperti sekilas hampir sama artinya, namun sebenarnya berbeda. Pada tulisan kali ini, saya akan mencoba sedikit menjabarkan apa perbedaan dari istilah Encoding, Encryption, Hashing dan yang mungkin orang jarang sekali dengar yaitu Obfuscation. Mari kita jabarkan satu per satu mulai dari Encoding.

1. Encoding
Apa itu Encoding? Kita biasanya sering menemui istilah ini, misal saat ingin melakukan Save suatu file HTML :D. Sebagian dari kita mungkin akan identik dengan UTF-8, UTF-16, Unicode, ASCII dan seterusnya saat menemui kata Encoding ini. Saya tidak akan membahas apa itu UTF-8, UTF-16 dan teman - temannya yang lain pada kesempatan kali ini. Jadi, sebenarnya apa itu Encoding? apabila ditinjau dari tujuannya yaitu mentransformasikan data menjadi format lain untuk tetap dapat dikonsumsi dengan baik oleh sistem yang berbeda. Tujuan dari Encoding ini bukan untuk menjaga data tetap bersifat rahasia. Karena saat format data diubah oleh proses Encoding menjadi format data lainnya, proses Encoding menggunakan sebuah skema yang mana skema tersebut tersedia secara publik. Sehingga mudah saja jika kita ingin melakukan proses Reverse (Decoding).    

Gambar Skema ASCII

2.Encryption
Istilah Encryption ini sepertinya yang cukup populer di antara yang lainnya. Menurut ilmu yang pernah saya dapat dari kuliah dulu :P, Encryption ini adalah istilah yang sebenarnya berada pada cabang ilmu Kriptografi (ilmu seni merahasiakan data). Beda dengan Encoding tadi, bahwa Encryption justru bertujuan untuk menjaga kerahasiaan sebuah data setelah data tersebut diubah formatnya. Biasanya ada istilah - istilah yang terkait dengan Encryption yaitu Plain Text (data sebelum dikenakan proses Encryption) dan Cipher Text (data sesudah dikenakan proses Encryption). Untuk format data setelah dilakukannya Encryption, tidak sembarangan pihak yang bisa mengubahnya kembali / Reverse (Decryption) menjadi Plain Text. Karena dibutuhkan suatu kunci / key untuk mengubah data Cipher tersebut menjadi Plain. Contoh - contoh dari Encryption biasanya seperti RSA, Blowfish, AES dan seterusnya silahkan dicari sendiri :D.

Gambar Cipher Text

3. Hashing
Saya suka mengikuti beberapa komunitas terkait bahasa pemrograman, seperti PHP Indonesia misalnya. Disana saya masih suka melihat pertanyaan - pertanyaan yang misalnya "Bagaimana cara mengubah kembali password yang sudah menjadi MD5 ke text biasa lagi?". Kurang lebih seperti itu pertanyaannya. Jika ada yang masih belum tau MD5, itu adalah salah satu teknik hashing yang cukup populer namun konon sudah tidak aman lagi :D. Hashing tidak sama dengan Encryption yang bisa dikembalikan lagi dari cipher text ke plain text. Hashing hanya memiliki proses satu arah (one way), hanya bisa melakukan pengubahan plain text ke cipher text. Lalu, apa tujuan dari menggunakan hashing ? sebenarnya hashing adalah cara memberikan suatu tanda integritas pada suatu object, bisa suatu pesan atau file. Terkadang saat suatu pesan atau file dikirim melewati suatu network atau jaringan. Kita tidak tau apakah file atau pesan kita saat menuju destinasi tidak ada yang mencoba mengubahnya. Jika ada yang mengubahnya, pasti cipher dari hashing file atau pesan tersebut berbeda dari cipher hashing awal saat file atau pesan itu akan dikirimkan. Sehingga cipher tersebut bisa dijadikan indikasi terkait integritas file atau pesan tersebut.

Gambar Logic Scheme SHA512
4.Obfuscation
Obfuscation adalah istilah yang mungkin tidak begitu populer dibandingkan Encoding, Encryption dan Hashing. Tetapi mungkin kita semua pernah menemukannya. Misal pada saat kita memilih library Jquery yang sizenya lebih kecil (Jquery.min.js). Jika kita buka file jquery.min.js tersebut, kita tidak akan dengan mudah membaca source code yang ada di dalamnya. Jadi sekarang sudah tau apa itu Obfuscation ? Ya benar, Obfuscation bertujuan untuk membuat source code menjadi sulit dibaca, dimengerti, atau digandakan.

Gambar Obfuscation


Itulah penjelasan singkat dari perbedaan Encoding, Encryption, Hashing dan Obfuscation. Semoga bermanfaat. Terimakasih

Selasa, 22 Maret 2016

Penggunaan Begin, Rollback dan Commit Tran

Pada kesempatan kali ini, saya ingin berbagi sedikit tentang cara menggunaan perintah BEGIN, ROLLBACK dan COMMIT TRAN pada SQL Server. Perintah - perintah ini erat kaitannya bersamaan dengan perintah DML (Data Manipulation Language) seperti DELETE, UPDATE, INSERT dan lain - lain. Terkadang saat kita melakukan transaksi baik itu delete, update ataupun insert pada data di suatu table, bisa saja terjadi kesalahan transaksi misal seperti salah melakukan delete atau update pada suatu data. Atau kita terlanjur melakukan insert data yang padahal seharusnya data itu tidak dilakukan insert. Karena itulah kita sebenarnya dalam melakukan transaksi perlu menggunakan perintah seperti BEGIN, ROLLBACK, dan COMMIT TRAN.

Arti dari kata BEGIN TRAN artinya adalah suatu tanda awal bahwa kita akan melakukan transaksi baik itu delete, update ataupun insert. ROLLBACK TRAN adalah jika suatu transaksi telah terjadi, maka dengan perintah tersebut kita bisa mengembalikan data dimana transaksi tersebut sebelum dijalankan. Kemudian untuk COMMIT TRAN adalah lawan dari ROLLBACK TRAN, kita akan mengunci atau membuat permanen data dari hasil transaksi yang telah dilakukan, sehingga kita tidak bisa mengembalikan data sesaat sebelum dilakukannya transaksi.

Untuk lebih jelasnya saya akan mencoba memberikan contoh dalam penggunaan BEGIN TRAN - ROLLBACK TRAN dan BEGIN TRAN - COMMIT TRAN berikut di bawah ini

Gambar Contoh BEGIN TRAN - ROLLBACK TRAN
Pada script di atas menjelaskan bahwa terdapat transaksi delete data dari table Category dengan ID = 16. Ketika dilakukan select sebelum dan sesudah perintah delete, terlihat data untuk ID = 16 tidak ada setelah dilakukan delete. Namun dilakukannya select kembali setelah perintah ROLLBACK TRAN maka data untuk ID = 16 kembali muncul. Artinya adalah setelah dilakukannya Rollback, data dikembalikan kepada saat sebelum transaksi itu dijalankan.

Gambar Contoh BEGIN TRAN - COMMIT TRAN
Pada script di atas menjelaskan bahwa terdapat transaksi delete data dari table Category dengan ID = 16. Ketika dilakukan select sebelum dan sesudah perintah delete, terlihat data untuk ID = 16 tidak ada setelah dilakukan delete. Namun dilakukannya select kembali setelah perintah COMMIT TRAN maka data untuk ID = 16 juga tidak muncul. Artinya adalah setelah dilakukannya Commit, data secara permanen telah berubah setelah transaksi itu dijalankan.

Sekian dan semoga bermanfaat. Terimakasih

Minggu, 28 Februari 2016

Debug program di Visual Studio 2015

Debug adalah suatu fitur yang diidamkan bagi hampir seluruh developer. Setiap pengembangan suatu system khususnya pada coding, tidak dapat dipungkiri bahwa Debugging sangat diperlukan sekali bagi para developer. Dengan adanya debug, para developer tidak harus selalu mengawang-awang logic yang telah dibuatnya saat setelah melakukan proses compile.

Terkadang saat kita sudah merangkai code pada program yang kita buat, pada proses compile memang success (berhasil), namun tidak selamanya code yang kita buat berhasil pada tahap compile-nya, berhasil pula berjalan mulus pada saat dijalankan (running). Karena seyogyanya kita memang perlu memikirikan berbagai kemungkinan (test case) pada code yang telah kita buat.

Pada artikel kali ini, saya akan berbagi cerita tentang bagaimana saya melakukan debug pada IDE Visual Studio 2015. Sebelum saya lanjut pada topik intinya, saya akan menjelaskan sedikit tentang IDE Visual Studio 2015. Belum lama ini Microsoft telah me-release IDE Visual Studio 2015 yang banyak sekali enhancement pada fitur-fitur yang lebih memudahkan para developer .Net Framework dalam mengembangkan system yang dibuatnya. Dibanding versi-versi sebelumnya. Terdapat penambahan dan perbaikan fitur-fitur yang semakin canggih dalam memudahkan para developer. Salah satunya adalah fitur untuk Debug.

Sebenarnya fitur untuk debug ini adalah fitur lama dan memang sudah ada pada Visual Studio versi sebelum-sebelumnya. Namun, pada Visual Studio 2015 ini. Ada kelebihan yang cukup membantu sekali menurut pribadi saya sendiri. Kelebihannya adalah selain kita bisa melakukan debug, saat melakukan debug kita bisa langsung pula mengubah code kita jika memang kita menemukan kesalahan yang kita sadari saat program didebug. Dengan adanya fitur seperti ini, kita tidak perlu melakukan compile ulang lagi saat setelah kita mengubah code kita. Kita bisa saja cukup melakukan satu kali compile lalu saat kita debug dan kita menemukan kesalahan logic pada code kita, kita bisa langsung mengubah code kita saat kita melakukan debug tanpa harus stopping proses. Berikut adalah contoh sederhana dari debugging yang saya lakukan.

Gambar Proses Debugging Pada Visual Studio 2015
Pada gambar diatas, jika dijalankan maka akan menghasilkan output "Nilai b lebih besar dari a". Asumsi misal logic tersebut salah dan kita mau mengganti nilai variable a menjadi a = 13. Kita tidak perlu melakukan stop terlebih dahulu kemudian kita ganti variable tersebut. Maka saat setelah kita langsung mengganti variable a menjadi a = 13 saat sedang debug, output dari program tersebut akan menghasilkan "Nilai b lebih besar dari a".

Seperti itulah keunggulan melakukan debug pada Visual Studio 2015. Kurang lebihnya semoga bermanfaat. Terimakasih.