TDCTF Academy Logo TDCTF ACADEMY

Lab 6: Hash Functions - MD5, SHA256, dan Collisions

Target: Memahami hash functions - properti, penggunaan, dan kelemahan
Tools: python3, openssl


Konsep

Hash function mengubah data input (berapapun panjangnya) menjadi fingerprint ukuran tetap. Sifat penting: satu arah (tidak bisa reverse).


Praktikum

cd ~ && mkdir crypto-lab6 && cd crypto-lab6

python3 << 'PYEOF'
import hashlib

messages = ["Hello", "Hello ", "hello", "Hello World!"]

print("=== Hash dari Pesan Serupa ===")
for msg in messages:
md5 = hashlib.md5(msg.encode()).hexdigest()
sha256 = hashlib.sha256(msg.encode()).hexdigest()
print(f"'{msg}'")
print(f" MD5: {md5}")
print(f" SHA256: {sha256}")
print()

# 2. Avalanche effect - 1 bit change
print("=== Avalanche Effect ===")
text1 = "The quick brown fox jumps over the lazy dog"
text2 = "The quick brown fox jumps over the lazy cog" # 1 char beda!

h1 = hashlib.sha256(text1.encode()).hexdigest()
h2 = hashlib.sha256(text2.encode()).hexdigest()

print(f"SHA256('{text1}'): {h1}")
print(f"SHA256('{text2}'): {h2}")

# Count different bits
bits_diff = sum(bin(a ^ b).count('1') for a, b in zip(bytes.fromhex(h1), bytes.fromhex(h2)))
print(f"Bit berbeda: {bits_diff} dari 256 bit ({bits_diff/256*100:.1f}%)")
print()

# 3. MD5 collision demo (conceptual)
print("=== MD5 Collision ==*")
print("MD5 sudah terbukti memiliki collision (two different inputs, same hash).")
print("Contoh nyata: dua file .py berbeda bisa punya MD5 sama!")
print("Gunakan SHA256 atau SHA3 sebagai gantinya.")
PYEOF

️ Analisis

Hash Bit Length Collision? Status
MD5 128 ✅ Terbukti ❌ Jangan gunakan
SHA1 160 ✅ Terbukti (SHAttered) ❌ Jangan gunakan
SHA256 256 ❌ Belum ✅ Aman
SHA3-256 256 ❌ Belum ✅ Recommended

Refleksi: Hash adalah sidik jari digital. Gunakan SHA256 atau SHA3. Jangan pernah gunakan MD5 atau SHA1 untuk keamanan - sudah terbukti bisa dimanipulasi.


Generated by @farishhz Agent Pentest Pipeline - TDCTF Security Academy

PADA HALAMAN INI