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:

Advertisements