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:

Simple IPv6 Multicast with Python

screenshot

python socket programming

Ini adalah oleh-oleh pertama Ane, hasil belajar bulan pertama di Japan. Sebuah program dalam bahasa python  untuk pengirim pesan “Hello Word” dalam jaringan internet menggunakan IPv6 dan multicast protocol. Melas banget hanya untuk membuat program begini saja butuh waktu “pencarian” selama 1 bulan, hehehehe… maap lelet… :”>

Program ini sudah Ane modifikasi dari source aslinya (yang didesain untuk FreeBSD dan MacOS), sehingga bs dpergunakan di Linux. Oh ya source ini tidak compatible dengan Jendela Windows, jadi walau di run sampai tua gak bakalan jalan hehehehe.

Source program ini Ane share dan sifatnya open source, silahkan didowload, dimodifikasi, diuprek-uprek, diajarkan atau bahkan dijual (kalo laku) dengan satu syarat jangan menghilangkan informasi bahwa ini adalah hasil karya Ane (yang telah dimodifikasi dari sumber aslinya) 🙂

Oh ya ada catatan dari pembuat pertama :

“The thing I like least is the dependence on ctypes (or dl) to provide if_nametoindex. It would be nice if this method was provided by Python’s socket module instead. If you have another approach, I’d love to hear about it!”

Happy Programming…

Membuat Form Full Screen di Delphi

Full Screen adalah tampilan yang memenuhi seluruh layar. Untuk membuat sebuah Form memiliki tampilan full screen, caranya adalah sebagai berikut :

  • Pilih Form mana yang akan dibuat full screen.
  • Pada Object Inspector -> Properties -> BorderStyle ubah menjadi bsNone.
  • Pada Object Inspector -> Properties -> WindowState ubah menjadi wsMaximized.

Setelah itu coba Run program. Maka akan didapat tampilan form yang full screen.

Referensi : Hasil dari percobaan Ane sendiri.

Mengkoneksikan MYSQL dengan Delphi 7

Berikut ini adalah cara mengkoneksikan database MySQL dengan IDE Delphi :

  1. Salinlah DBEXPMYS.DLL yang terdapat pada C:\Program Files\Borland\Delphi7\Bin ke C:\Windows\system
  2. Di Direktori C:\Borland Shared\DBExpress terdapat berkas bernama dbxdriver.txt, dengan menggunakan text editor, misalkan Notepad, ubahlah teks berikut:[MySQL]
    GetDriverFunc = getSQLDriverMYSQL
    LibraryName=dbexpmysql.dll

    menjadi

    [MySQL]
    GetDriverFunc = getSQLDriverMYSQL
    LibraryName=dbexpmys.dll

  3. Downloadlah file libmysql.dll dari situs http://www.dll-files.com/dllindex/dll-files.shtml?libmysql
  4. Salinlah file libmysql.dll tersebut ke dalam C:\windows\System
  5. Untuk mengkoneksikan antara program yang kita buat dalam Delphi dengan MySQL kita dapat menggunakan komponen SQLConnection yang terdapat dalam dbExpress

Semoga bermanfaat 😀

Sumber : Dasar Aplikasi Database MySQL Delphi, Abdul Kadir

Fungsi Pencarian Modulo, Invers Modulo dan Determinan Matriks nxn

Beberapa hari yang lalu Ane diminta bantuan oleh teman Ane mahasiswa jurusan matematika untuk membuat program kriptografi menggunakan algoritma Hill. Program ini memiliki hitungan matematika yang tergolong rumit untuk programer yang baru belajaran kaya Ane. Dan jujur saja sampai artikel ini ditulis ada satu fungsi yang belum bisa Ane selesaikan, yaitu INVERS MATRIKS BERORDO n x n.

Namun Alhamdulillah Ane sudah berhasil menyelesaikan beberapa fungsi diantaranya adalah :

  1. Mencari Modulo
  2. Mencari Invers Modulo
  3. Mencari Determinan Matriks ordo n x n (tapi Ane hanya ngedit doank, pembuat pertamannya Dosen Ane)

Agar bisa bermanfaat bagi kesejahteraan umat manusia (halah gak penting), source code nya Ane share di Blog Ane ini 😀

  1. Fungis Mencari Modulo.pdf
  2. Fungsi Mencari Balikan Modulo.pdf
  3. Fungsi Mencari Determinan Matriks n x n.pdf

Semoga bermanfaat 🙂