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:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s