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 :
Output :
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:
Output :
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:
Output :
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 :
Simple hashing file menggunakan Python:
Referensi :
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
Post a Comment