Fungsi Hash Kriptografi (Bagian 2)

Salt

Penggunaan hash untuk menyimpan password merupakan cara yang standar di berbagai aplikasi. Cara ini sederhana, tapi hash saja memiliki kelemahan:

  • jika ada dua atau lebih orang passwordnya sama, maka akan terlihat bahwa hashnya sama.
  • bisa dilakukan dictionary attack. Artinya: hash semua kata di kamus sekali, lalu cocokkan hashnya

Cara yang lebih baik adalah dengan menambahkan salt, berupa beberapa karakter random yang berbeda untuk tiap entry. Jadi misalnya jika password untuk user1 adalah 123, kita bisa menghasilkan salt random misalnya “xcd”, lalu salt ini dihash bersama password hash(“xcd”+”123”). Jika hash yang dipakai adalah MD5, maka hasilnya:

4c88e409f0d1938d4f0adf7bdc896fbe

Di dalam database atau file, kita perlu menyimpan salt yang dipakai: “xcd”, misalnya seperti ini: xcd$4c88e409f0d1938d4f0adf7bdc896fbe

Lanjutkan membaca “Fungsi Hash Kriptografi (Bagian 2)”

Mengingat Jadwal di HP

Dengan memilih homeschooling, kami bisa menyusun jadwal lebih leluasa. Tapi karena banyak kelas tambahan, jadilah terasa lebih sulit mengingat semua jadwal kalau tidak dituliskan terutama kalau ada kegiatan tambahan yang di luar jadwal. Tahun lalu saya mencoba memakai diary/organizer fisik untuk mengingat jadwal termasuk merencanakan jadwal pelajaran, tapi hanya berhasil dipakai 1 bulan saja. Kadang-kadang waktu ada yang perlu ditulis, bukunya lagi gak di tas, sampai rumah jadi lupa deh.

Google Calendar menggantikan buku fisik

Sejak gagal pakai buku fisik, saya mulai membiasakan diri mencatat jadwal di aplikasi Calendar yang ada di HP saja. Calendar di android ini bisa dishare juga ke Joe, jadi kalau ada appointment yang bukan hal rutin mingguan, saya tambahkan di Calendar dan bikin reminder berupa notifikasi maupun e-mail. Kalender yang kami pakai juga di sinkronisasi ke gmail. Jadwal yang sering terlupakan itu biasanya janji ke dokter gigi, karena cuma 6 bulan sekali, biasanya klinik gigi nya akan menelpon untuk mengingatkan janji untuk esok harinya, tapi kalau mengandalkan nunggu telepon repot juga kalau mau bikin rencana jalan-jalan di akhir pekan.

Tampilan kegiatan per hari

Calendar ini bisa diubah tampilannya untuk melihat schedule saja, jadwal sehari termasuk jamnya ataupun secara keseluruhan jadwal 1 bulan. Jadwal saya itu biasanya isinya ya jadwal antar jemput anak-anak. Terkadang ada juga kegiatan bersama atau khusus untuk saya. Sebenarnya hari ini, niatnya mau datang ke kumpulan perajut, tapi karena mata sangat mengantuk, saya putuskan buat tidur siang sama Joshua saja, hehehe.

Lanjutkan membaca “Mengingat Jadwal di HP”

Fungsi Hash Kriptografi (Bagian 1)

Fungsi hash adalah fungsi yang memetakan dari suatu data (bisa string atau apapun) ke sebuah data lain yang ukurannya biasanya lebih kecil. Ada fungsi hash untuk dipakai di struktur data hash table (outputnya adalah integer) dan ada fungsi hash untuk kriptografi outputnya berupa string alfanumerik dengan panjang tertentu.

Hash Table

Sebelum menjelaskan fungsi hash kriptografi, saya jelaskan dulu contoh fungsi hash biasa karena lebih sederhana. Penggunaan fungsi hash dalam kasus ini adalah untuk menyimpan data ke hash table, supaya gampang diakses lagi.

Misalnya kita punya array yang bisa menyimpan 100 elemen. Kita ingin menyimpan sebuah string, lalu ingin bisa menemukan kembali string itu dengan cepat nantinya, tidak memulai membandingkan satu per satu dari elemen pertama. Untuk melakukan ini kita bisa memakan fungsi hash. Sebuah string akan dimasukkan ke sebuah fungsi hash, hasilnya adalah sebuah angka n dari 0-99, lalu kita masukkan string ke array di indeks itu.

Lanjutkan membaca “Fungsi Hash Kriptografi (Bagian 1)”

Homeschool atau Kirim Anak ke Sekolah?

Kami pernah mengirim Jonathan ke sekolah selama 3 tahun sebelum akhirnya memutuskan menghomeschool Jonathan selama 1,5 tahun terakhir ini. Saya ingat, hari pertama kami mulai mantap menghomeschool ketika kami mulai menggunakan kurikulum dari CLE. Akhir Agustus 2017, Jonathan sering sakit, susah tidur cepat dan berakibat masih ngantuk waktu bangun dan di sekolah sering ketiduran. Di sekolah, Jonathan akhirnya lebih sering tidak bisa mengikuti pelajaran dengan baik.

Awal memutuskan homeschool, saya sangat khawatir kalau kami jadi terlena dan tidak mengajarkan apapun ke Jonathan, apalagi saya masih belum menemukan kurikulum yang akan kami pakai. Saya khawatir terlalu santai, dan tahu-tahu waktu berlalu tanpa Jona belajar apapun.

Saya sempat sedikit khawatir masalah apakah saya akan kuat secara mental untuk tidak marah-marah kalau Jonathan tidak mengerjakan tugasnya. saya nggak kuatir masalah tidak bisa mengajarkannya atau Jonathan tidak mengerti, saya lebih khawatir Jonathan tidak mau mendengar saya atau menolak mengerjakan pekerjaan sekolahnya.

Lanjutkan membaca “Homeschool atau Kirim Anak ke Sekolah?”

Super Full Moon 2019

Dari beberapa hari lalu, sudah dapat link mengenai super full moon yang akan terjadi hari ini 19 Februari 2019. Tapi karena banyak kesibukan hari ini jadi terlewat informasi kalau badan astronomi Thailand yang ada di Chiang Mai ternyata mengadakan acara mengintip super moon pakai teleskop mereka. Untungnya sekarang ini semua ada di facebook ya, jadi walau ga bisa datang ke sana, bisa juga melihat hasil jepretan yang datang ke sana.

Foto super full moon dari FB page: อุทยานดาราศาสตร์สิรินธร Princess Sirindhorn Astropark

Tadi akhirnya cuma liat keluar dengan mata biasa, sekaligus memberi tahu Jonathan beberapa informasi mengenai super full moon ini. Seperti biasa, cara termudah mengajarkannya setelah melihat langsung adalah memberikan video mengenai apa itu super full moon. Fakta-fakta mengenai super full moon bisa di baca lengkap di sini.

Lanjutkan membaca “Super Full Moon 2019”

Kriptografi RSA Praktis

Topik kriptografi RSA sudah dibahas di banyak artikel dan video oleh orang lain, jadi di sini saya hanya ingin memberikan mengenai topik RSA secara praktis. Praktis di sini artinya saya akan memakai tool openssl dan kode Python untuk melakukan enkripsi.

Prinsip RSA adalah: bahwa kita bisa mencari 3 bilangan: n, e, dan d sedemikian hingga relasi ini terpenuhi.

{\displaystyle (m^{e})^{d}\equiv m{\pmod {n}}}

Jika diketahui e dan n, kita tidak bisa dengan mudah mencari tahu nilai d. Dalam RSA: public key adalah n dan e, sedangkan private key adalah d dan n.

Saya tidak akan menjelaskan secara matematis bagaimana menghasilkan key RSA ini. Penjelasannya bisa dibaca di Wikipedia, tapi ada beberapa hal dasar yang perlu diketahui:

  • n adalah perkalian dari dua buah bilangan prima p dan q.
  • Jika kita bisa memfaktorkan n, maka kita bisa mencari nilai private key.
  • Saat ini tidak ada algoritma efisien untuk memfaktorkan n
Lanjutkan membaca “Kriptografi RSA Praktis”

Hex Editor

Saya beruntung dulu ketika kali pertama belajar komputer lebih dari 25 tahun yang lalu, saya hanya punya satu pilihan sistem operasi: DOS. Sistem operasi ini sangat sederhana dan bisa dimengerti sampai sangat detail. Waktu itu hanya ada 1 filesystem yang bisa dipakai untuk DOS: File Allocation Table (FAT).

PC Tools

Salah satu tool yang sangat membantu saya mendalami berbagai hal yang berhubungan dengan komputer adalah PC Tools. Software “ajaib” ini punya banyak fungsi, dan salah satunya adalah sebagai hex editor. Dengan hex editor ini dulu mudah sekali untuk mengubah string dalam sebuah program (misalnya iseng mengganti pesan error jadi bahasa Indonesia).

Lanjutkan membaca “Hex Editor”