Belajar Membuat Algoritma Hash Menggunakan Python

Algoritma Hash adalah sebuah algoritma yang mengubah sebuah data informasi berupa huruf, angka atau karakter lainnya menjadi karakter terenkripsi dengan ukuran yang tetap, data yang sudah di enkripsi melalui fungsi hash tidak dapat dikembalikan atau didekripsi. Oleh karna itu, Hash bisa disebut dengan One Way Function atau bisa juga dikatakan enkripsi yang satu arah.

Fungsi hash itu sendiri biasa nya dimanfaatkan untuk Password Hashing (Menyembunyikan Password Asli) atau Digital Signature (Tanda tangan digital). Algoritma hash yang umum digunakan yaitu MD5 dan SHA-2.
Pada kesempatan kali ini saya tidak akan menjelaskan lebih jauh tentang macam-macam dang pengertian hash itu sendiri, melainkan bagaimana cara membuat hash dengan bahasa pemrograman Python.

kita akan menggunakan modul built-in hashlib untuk menggunakan berbagai algoritma hash di Python, Let's get started :
 
import hashlib

# encode it to bytes using UTF-8 encoding
message = "Some text to hash".encode()
 
Dimulai dengan MD5 Hash :

# hash with MD5 (not recommended)
print("MD5:", hashlib.md5(message).hexdigest()) 
 
Output :
MD5: 3eecc85e6440899b28a9ea6d8369f01c
 
Yang kedua adalah SHA-2 : 

# hash with SHA-2 (SHA-256 & SHA-512)
print("SHA-256:", hashlib.sha256(message).hexdigest())

print("SHA-512:", hashlib.sha512(message).hexdigest())

Output :
SHA-256: 7a86e0e93e6aa6cf49f19368ca7242e24640a988ac8e5508dfcede39fa53faa2
SHA-512: 96fa772f72678c85bbd5d23b66d51d50f8f9824a0aba0ded624ab61fe8b602bf4e3611075fe13595d3e74c63c59f7d79241acc97888e9a7a5c791159c85c3ccd

SHA-2 adalah keluarga dari 4 fungsi hash: SHA-224, SHA-256, SHA-384 dan SHA-512, kalian juga dapat menggunakan hashlib.sha224 () dan hashlib.sha-384 (). Namun, SHA-256 dan SHA-512 yang biasanya digunakan oleh kebanyakan orang.
Alasannya disebut SHA-2 (Secure Hash Algorithm 2), adalah karena SHA-2 adalah penerus SHA-1 yang sudah outdate dan mudah dicrack, SHA-2 sendiri menghasilkan hash yang lebih panjang yang mengarah pada keamanan yang lebih tinggi level dari SHA-1.

Meskipun SHA-2 masih digunakan saat ini, banyak yang percaya bahwa serangan terhadap SHA-2 hanya masalah waktu, para researcher khawatir tentang keamanan jangka panjangnya karena kemiripannya dengan SHA-1.

Akibatnya, SHA-3 diperkenalkan oleh NIST sebagai paket cadangan, yang merupakan fungsi spons yang sama sekali berbeda dari SHA-2 dan SHA-1, mari kita lihat dalam Python:

# hash with SHA-3
print("SHA-3-256:", hashlib.sha3_256(message).hexdigest())

print("SHA-3-512:", hashlib.sha3_512(message).hexdigest())

Output :

SHA-3-256: d7007c1cd52f8168f22fa25ef011a5b3644bcb437efa46de34761d3340187609
SHA-3-512: de6b4c8f7d4fd608987c123122bcc63081372d09b4bc14955bfc828335dec1246b5c6633c5b1c87d2ad2b777d713d7777819263e7ad675a3743bf2a35bc699d0

SHA-3 tidak mungkin rusak dalam waktu dekat. Faktanya, ratusan cryptanalyst yang ahli gagal memecahkan SHA-3.

Apa yang kita maksud dengan algoritma hashing yang aman ? Fungsi Hashing memiliki banyak karakteristik, termasuk collision resistance, yang disediakan oleh algoritma yang membuatnya sangat sulit bagi attacker untuk menemukan dua pesan yang sangat berbeda yang hash dengan nilai hash yang sama.

Bagaimana menggunakan fungsi hash yang lebih cepat lebih aman daripada SHA-2 dan setidaknya seaman SHA-3? Jawabannya ada pada BLAKE2:

# hash with BLAKE2
# 256-bit BLAKE2 (or BLAKE2s)
print("BLAKE2c:", hashlib.blake2s(message).hexdigest())
# 512-bit BLAKE2 (or BLAKE2b)
print("BLAKE2b:", hashlib.blake2b(message).hexdigest())

Output :

BLAKE2c: 6889074426b5454d751547cd33ca4c64cd693f86ce69be5c951223f3af845786
BLAKE2b: 13e2ca8f6a282f27b2022dde683490b1085b3e16a98ee77b44b25bc84a0366afe8d70a4aa47dd10e064f1f772573513d64d56e5ef646fb935c040b32f67e5ab2

Hash BLAKE2 lebih cepat dari SHA-1, SHA-2, SHA-3 dan bahkan MD5, dan bahkan lebih aman daripada SHA-2. Ini cocok untuk digunakan pada modern CPU yang mendukung paralel komputing pada sistem multicore.
BLAKE2 banyak digunakan dan telah diintegrasikan ke dalam cryptography libraries utama seperti OpenSSL, Sodium dan banyak lagi

Simple hashing text menggunakan Python :

import hashlib

message = "Tuliskan sesuatu".encode()

print("MD5:", hashlib.md5(message).hexdigest())

print("SHA-256:", hashlib.sha256(message).hexdigest())

print("SHA-512:", hashlib.sha512(message).hexdigest())

print("SHA-3-256:", hashlib.sha3_256(message).hexdigest())

print("SHA-3-512:", hashlib.sha3_512(message).hexdigest())

print("BLAKE2c:", hashlib.blake2s(message).hexdigest())

print("BLAKE2b:", hashlib.blake2b(message).hexdigest())

Simple hashing file menggunakan Python:

import hashlib
import sys

def read_file(file):
    """Reads en entire file and returns file bytes."""
    BUFFER_SIZE = 16384 
    b = b""
    with open(file, "rb") as f:
        while True:
            bytes_read = f.read(BUFFER_SIZE)
            if bytes_read:
                b += bytes_read
            else:
                break
    return b

if __name__ == "__main__":
    file_content = read_file(sys.argv[1])

    print("MD5:", hashlib.md5(file_content).hexdigest())

    print("SHA-256:", hashlib.sha256(file_content).hexdigest())

    print("SHA-512:", hashlib.sha512(file_content).hexdigest())

    print("SHA-3-256:", hashlib.sha3_256(file_content).hexdigest())

    print("SHA-3-512:", hashlib.sha3_512(file_content).hexdigest())

    print("BLAKE2c:", hashlib.blake2s(file_content).hexdigest())

    print("BLAKE2b:", hashlib.blake2b(file_content).hexdigest())

Referensi :
  • "Hashing Algorithms in Python using hashlib" - thepythoncode
  • "Perbedaan Enkoding, Enkripsi, dan Hash" @ramdanur via medium

Comments

Popular posts from this blog

[BUG BOUNTY] Email Spoofing | No Valid SPF Record

Legion Tutorial - Information Gathering (Kali Linux)

Deface web with auto sql balitbang method