Covert SHA1 dari Binary ke Hexadecimal Digits dan Sebaliknya

SHA-1 produces a 160-bit (20-byte) hash value. A SHA-1 hash value is typically expressed as a hexadecimal number, 40 digits long. (http://en.wikipedia.org/wiki/SHA-1)

SHA1 akan menghasilkan 20 bytes binary data (termasuk NULL) yang dapat kita gunakan untuk banyak hal termasuk untuk pengecekan integritas file. Untuk ‘non-binary environment’ seperti email, atau web kita bisa meng-‘convert’ 20 byte binary data tersebut ke dalam bentuk Hexadecimal Digits. Hexadecimal Digits ini berukuran dua kali lipat, yaitu 40 byte data.

Python telah menyediakan sebuah library bernama ‘binascii‘ yang dapat kita gunakan untuk meng-‘convert’ binary data tersebut ke dalam bentuk hexadecimal digits ataupun sebaliknya. Berikut adalah contoh penggunaan library ‘binascii’

import binascii, hashlib

sha1 = hashlib.sha1()
sha1.update('hello world')
sha1bin = sha1.digest()
sha1hex = sha1.hexdigest()

sha1hexconvert = binascii.hexlify(sha1bin)
sha1binconvert = binascii.unhexlify(sha1hex)

# menampilkan hasil covert beserta ukurannya
print (sha1bin, len(sha1bin), 'sha1bin')
print (sha1binconvert, len(sha1binconvert), 'sha1binconvert')
print (sha1hex, len(sha1hex), 'sha1hex')
print (sha1hexconvert, len(sha1hexconvert), 'sha1hexconvert')

Dari segi panjang data, SHA1 dalam bentuk binary lebih hemat karena hanya membutuhkan 20 byte dibandingkan bentuk hexadecimalnya yang memerlukan 40 byte data. Penghematan 20 byte ini kan sangat berarti bila kita masuk dalam dunia network programming dimana penghematan pengiriman data sangat diperlukan.

Semoga bermanfaat.

Referensi:

Mencari SHA1 dari File Berukuran Besar Menggunakan Python

In cryptography, SHA-1 is a cryptographic hash function designed by the United States National Security Agency and published by the United States NIST as a U.S. Federal Information Processing Standard.

SHA-1 produces a 160-bit (20-byte) hash value. A SHA-1 hash value is typically expressed as a hexadecimal number, 40 digits long. (http://en.wikipedia.org/wiki/SHA-1)

Seperti yang (semoga saja) sudah kita ketahui, salah satu fungsi dari SHA1 adalah untuk mengecek integritas dari sebuah file. SHA1 akan menghasilkan 20 byte data yang sifatnya unik. Bila sebuah data dalam sebuah file berubah 1 byte saja, maka nilai SHA1 dari file tersebut akan berubah total.

Kali ini saya akan berbagi info tentang bagaimana menghitung nilai SHA1 dari sebuah file yang berukuran besar (misalnya lebih dari 1 GB) tanpa mengkonsumsi banyak memory (RAM).  Soruce code berikut adalah fungsi menggunakan bahasa python versi 2 untuk menghitung SHA1.

import hashlib
def sha1sum(filePath):
    sha1 = hashlib.sha1()
    fOri = open(filePath, 'rb')
    line = fOri.read(8388608) #read every 8MB
    while line:
        sha1.update(line)
        line = fOri.read(8388608) #read every 8MB
    fOri.close()
    return sha1.digest()

Fungsi tersebut akan membaca file tiap 8 MB. Walau file yang dihitung berukuran besar (misal 1 GB), fungsi tersebut hanya memerlukan memory  kurang lebih sebesar 8 MB.

Mudah bukan? Semoga info ini bermanfaat.

Referensi:

Cara menjadikan Virtual Box sebagai Windows Service

VirtualBoxService – A Windows-Service to control Startup and Shutdown of Virtualbox VMs. – https://code.google.com/p/virtualboxservice/

Bila kita ingin membuat sistem operasi virtual dalam VirtualBox yang kita install di Windows berjalan secara otomatis ketika komputer kita nyalakan maka VirtualBoxService ini dapat dijadikan sebagai cara alternatif. Program ini akan membuat sebuah service di Windows sehingga os virtual kita akan dijalankan ketika Windows dinyalakan.

<under construction>… (entah sampai kapan) #eh

YAMCAM webcam software untuk CCTV

What is Yawcam?
Yawcam is a shortening for Yet Another WebCAM software, and that’s exactly what it is ;-)
More precise Yawcam is a webcam software for windows written in java. The main ideas for Yawcam are to keep it simple and easy to use but to include all the usual features. – http://www.yawcam.com/

Singkat cerita, YAWCAM ini adalah applikasi webcam yang bisa kita gunakan untuk CCTV sederhana karena di dalamnya terdapat fasilitas:

.: Video streaming
.: Image snapshots
.: Built-in webserver
.: Motion detection
.: Ftp-upload
.: Text and image overlays
.: Password protection
.: Online announcements for communities
.: Scheduler for online time
.: Time lapse movies
.: Run as a Windows service
.: Multi languages

Program ini cukup sederhana sehingga mudah digunakan, tidak ribet, tidak perlu membuat account, tidak perlu registrasi, dan bebas digunakan tanpa harus membayar lisensi.

Semoga info singkat ini bisa bermanfaat :)

Menambah Network Interface Card di Fedora 15

Sebenarnya menambah Network Interface Card (NIC) di linux tidak menjadi masalah bila linux tersebut telah terinstall NetworkManager. Tapi bila NetworkManager tersebut tidak terinstall (umumnya karena kita memilih opsi “minimal install” saat instalasi linux fedora atau centos), maka akan menjadi sedikit “tricky”.

Oke kita mulai saja tutorial sederhana ini.

1. Pasang NIC yang baru lalu nyalakan komputer anda.

2. Buka terminal (login sebagai root), ketikkan dmesg | grep eth . Perintah tersebut kurang lebih akan menampilkan hasil seperti ini:

[ 7.045368] e1000 0000:00:03.0: eth0: (PCI:33MHz:32-bit) 08:00:27:c2:27:e5
[ 7.045375] e1000 0000:00:03.0: eth0: Intel(R) PRO/1000 Network Connection
[ 7.513655] e1000 0000:00:08.0: eth1: (PCI:33MHz:32-bit) 08:00:27:38:b7:ac
[ 7.513667] e1000 0000:00:08.0: eth1: Intel(R) PRO/1000 Network Connection
[ 9.281453] udev[386]: renamed network interface eth0 to p2p1
[ 9.281848] udev[383]: renamed network interface eth1 to p7p1

Pada contoh diatas NIC yang baru terdeteksi sebagai eth1 dan oleh fedora diberi nama lain sebagai p7p1 dengan MAC Address (Hardware Address / HWADDRS) 08:00:27:38:b7:ac.

3. Masih menggunakan terminal, buatlah sebuah file di /etc/sysconfig/network-scripts/ dengan nama ifcfg-p7p1 (nama file ini sesuaikan dengan alias interface yang muncul pada perintah dmesg tadi dengan format ifcfg-<nama interface>). Isi file tersebut dengan script berikut:

DEVICE="p7p1"
HWADDR="08:00:27:38:B7:AC"
ONBOOT="yes"
BOOTPROTO="dhcp"
NM_CONTROLLED="no"

Sesuaikan DEVICE, HWADDR dengan hasil perintah dmesg tadi.

4. Restart service network dengan cara: service network restart

Selesai, NIC yang bari siap digunakan :)

Perbedaan: precision, recall & accuracy

Tulisan ini terinspirasi gara-gara Vivi yang bingung perbedaan penggunaan dari accuracy, precision & recall.

Dalam “dunia” pengenalan pola (pattern recognition) dan temu kembali informasi (information retrieval), precision dan recall adalah dua perhitungan yang banyak digunakan untuk mengukur kinerja dari sistem / metode yang digunakan. Precision adalah tingkat ketepatan antara informasi yang diminta oleh pengguna dengan jawaban yang diberikan oleh sistem. Sedangkan recall adalah tingkat keberhasilan sistem dalam menemukan kembali sebuah informasi.

Sedangkan di “dunia lain” seperti dunia statistika dikenal juga istilah accuray. Accuracy didefinisikan sebagai tingkat kedekatan antara nilai prediksi dengan nilai aktual. Ilustrasi berikut ini memberikan gambaran perbedaan antara accuracy dan precision.

Accuracy vs Precision [4]

Accuracy vs Precision [4]

Agar lebih jelas, mari kita bahas dengan menggunakan contoh.

Misalkan kita ingin mengukur kinerja dari sebuah mesin pemisah ikan yang bertugas memisahkan ikan-ikan salmon dari semua ikan yang telah didapat. Untuk mengujinya kita akan memasukkan 100 ikan salmon dan 900 ikan lain (bukan ikan salmon). Hasilnya mesin tersebut memisahkan 110 yang dideteksi sebagai ikan salmon. Ke 110 ikan tersebut kemudian dicek kembali oleh manusia, ternyata dari 110 ikan tersebut hanya 90 ekor yang merupakan ikan salmon, sedangkan 20 lainnya merupakan ikan lain.

Dari kasus tersebut maka kita dapat simpulkan bahwa mesin tersebut memiliki precision sebesar 82%, recall sebesar 90% dan accuracy sebesar 97% yang didapatkan dari perhitungan berikut: Continue reading

Merubah Fedora 18 Hostname

Oke langsung saja, bila pada versi-versi sebelumnya kita bisa merubah hostname pada fedora dengan mengedit file

/etc/sysconfig/network

dan menambahkan baris

HOSTNAME="<newhostname>"

maka pada fedora 18 cara tersebut sudah obsolete.
Untuk merubah hostname pada fedora 18 adalah dengan perintah berikut:

hostnamectl set-hostname <newhostname> --static

Source:
http://forums.fedoraforum.org/showthread.php?p=1625871