Password hashing
- Dart kursu
- İleri seviye
- Ders 71/83
- 5 dk
Password hashing (bcrypt) öğrenirsin.
bcrypt ile parola hashleme
bcrypt, parolaları güvenli hashlemek için tasarlanmış bir algoritmadır. Her hash'e rastgele bir tuz (salt) ekler; bu nedenle aynı parola bile her seferinde farklı hash üretir. Gökkuşağı tablolarına (rainbow table) karşı korur. import 'package:bcrypt/bcrypt.dart'; ile içe aktarılır.
Örnek: final hash = BCrypt.hashpw('sifre123', BCrypt.gensalt());. Bu, 'sifre123' parolasını tuzlayarak hashler. Doğrulama: BCrypt.checkpw('sifre123', hash). Parola doğruysa true, yanlışsa false döner. bcrypt bilinçli olarak yavaştır; bu, kaba kuvvet (brute force) saldırılarını zorlaştırır.
Parola saklama deseni
Bir uygulama parolaları asla düz metin (plain text) olarak saklamaz. Bunun yerine kayıt sırasında BCrypt.hashpw(parola, BCrypt.gensalt()) ile hash üretir ve hash'i saklar. Giriş sırasında kullanıcının girdiği parolayı BCrypt.checkpw(parola, saklananHash) ile doğrular.
Bu desen, veri tabanı sızıntısında bile parolaların açığa çıkmamasını sağlar. Saldırgan hash'leri alır ama orijinal parolaları çıkaramaz. bcrypt'in yavaşlığı, sızdırılan hash'lerin kırılmasını da zorlaştırır. Bu derste hashPassword ve verifyPassword fonksiyonlarını tanımlayacağız.
Uygulama Parola fonksiyonları
import 'package:bcrypt/bcrypt.dart'; ekle. hashPassword(String password) fonksiyonunu tanımla: return BCrypt.hashpw(password, BCrypt.gensalt()); içersin. verifyPassword(String password, String hash) fonksiyonunu tanımla: return BCrypt.checkpw(password, hash); içersin. main içinde print('bcrypt: parola hashleme') ve print('API: hashpw, checkpw') ekle.
Başlangıç kodu
// bcrypt paketini içe aktar
// hashPassword ve verifyPassword fonksiyonlarını tanımla
void main() {
// bcrypt bilgisini yazdır
}Örnek çözüm
import 'package:bcrypt/bcrypt.dart';
String hashPassword(String password) {
return BCrypt.hashpw(password, BCrypt.gensalt());
}
bool verifyPassword(String password, String hash) {
return BCrypt.checkpw(password, hash);
}
void main() {
print('bcrypt: parola hashleme');
print('API: hashpw, checkpw');
}Beklenen çıktı
bcrypt: parola hashleme API: hashpw, checkpw
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 bcrypt importu
import 'package:____/bcrypt/bcrypt.dart';
import 'package:bcrypt/bcrypt/bcrypt.dart';
Açıklama: bcrypt package:bcrypt/bcrypt.dart ile içe aktarılır.
2 bcrypt parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
bcrypt |
Parola hashleme |
hashpw |
Hashler |
checkpw |
Doğrular |
gensalt |
Tuz üretir |
3 bcrypt ne için kullanılır?
- Dosya sıkıştırma
- HTTP isteği
- Parola hashleme Doğru cevap
- Ağ yönetimi
Açıklama: bcrypt parola hashleme için kullanılır.