💻
Kolay
Password Hashing Simulation
100 puan
·
Java
SHA-256 ve salt kullanarak basit bir password hashing sistemi yazın. Şifreleri hashleyip doğrulama yapabilmelisiniz. Bu ödev, Spring Security'nin PasswordEncoder mantığını anlamanıza yardımcı olacaktır.
📋 Talimatlar
Stdin'den komutlar okuyun:
HASH <password>→ Rastgele 8 hex karakter salt üretip SHA-256 ile hashleyin. Çıktı:<salt>:<hex-hash>VERIFY <password> <salt>:<hex-hash>→ Verilen şifreyi salt ile hashleyip stored hash ile karşılaştırın. Eşleşme:MATCH, aksi haldeNO_MATCHCHECK <password1> <password2>→ İki şifre aynı mı?SAMEveyaDIFFERENT
Hash hesaplama: SHA-256(salt + password) → hex string
Not: HASH komutunda salt üretimi deterministic olması için password'un her karakterinin ASCII değerlerini toplayıp 8 hex karaktere dönüştürün: String.format("%08x", sum). Bu sayede aynı password hep aynı salt'ı üretir (test için).
🧪 Örnek Test Senaryoları
HASH üretimi ve VERIFY doğrulama
Girdi
HASH hello VERIFY hello 00000214:128127c2e8badc1fdaa691816b00094b2a070f20894357131c5a5e0765677427
Beklenen Çıktı
00000214:128127c2e8badc1fdaa691816b00094b2a070f20894357131c5a5e0765677427 MATCH
Basit şifre karşılaştırma
Girdi
CHECK abc abc CHECK abc def
Beklenen Çıktı
SAME DIFFERENT
💡 İpuçları
İpucu 1: Salt üretimi: password karakterlerinin ASCII değerlerini toplayıp String.format("%08x", sum) ile hex'e çevirin.
İpucu 2: Hash hesaplama: SHA-256(salt + password) — salt'ı password'ün başına ekleyin.
İpucu 3: VERIFY'da stored hash'i ":" ile split ederek salt ve hash'i ayırın.
İpucu 4: MessageDigest.digest() byte array döner, her byte'ı %02x ile hex'e çevirin.
☕
Main.java
✓ Çözüm yüklendi
puan
Testleri çalıştırmak için kodunuzu gönderin
✅ Tüm testler geçti! Tebrikler!
Beklenen:
Sonuç:
Ln 1, Col 1
·
JAVA
·
UTF-8
Wandbox