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:

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