CodeBlanks Logo Icon CodeBlanks

Password hashing

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

main.dart
// bcrypt paketini içe aktar
// hashPassword ve verifyPassword fonksiyonlarını tanımla

void main() {
  // bcrypt bilgisini yazdır
}

Örnek çözüm

main.dart
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

Soru
import 'package:____/bcrypt/bcrypt.dart';
Cevap
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.

İleri seviye bölümündeki tüm dersler