• 29-10-2024, 19:45:20
    #1
    Merhaba python ile şifre yöneticisi yapıcam. bu uygulamada 256 bit şifreleme kullanılacak. Verdiğim şifreyi şifrelicek ve bunu databasede tutucak. Birde uygulamanın login ekranı olucak. Elinde böyle bir projesi olan varsa ücretsiz destek olabilir mi? Proje ödevimiz..
  • 29-10-2024, 19:49:24
    #2
    from cryptography.fernet import Fernet
    import sqlite3
    
    # Veritabanı oluşturma
    def create_db():
        conn = sqlite3.connect('password_manager.db')  # Veritabanı dosyası
        c = conn.cursor()
        c.execute('''
        CREATE TABLE IF NOT EXISTS users (
        username TEXT PRIMARY KEY,
        password TEXT NOT NULL
        )
        ''')
        conn.commit()
        conn.close()
    
    # Şifreleme anahtarı oluşturma
    def generate_key():
        key = Fernet.generate_key()
        with open("secret.key", "wb") as key_file:
            key_file.write(key)
    
    # Anahtarı yükleme
    def load_key():
        return open("secret.key", "rb").read()
    
    # Şifreleme
    def encrypt_password(password):
        key = load_key()
        f = Fernet(key)
        encrypted_password = f.encrypt(password.encode())
        return encrypted_password
    
    # Şifreleri veritabanına ekleme
    def add_user(username, password):
        conn = sqlite3.connect('password_manager.db')
        c = conn.cursor()
        c.execute("INSERT INTO users (username, password) VALUES (?, ?)", (username, password))
        conn.commit()
        conn.close()
    
    # Giriş kontrolü
    def login(username, password):
        conn = sqlite3.connect('password_manager.db')
        c = conn.cursor()
        c.execute("SELECT password FROM users WHERE username=?", (username,))
        row = c.fetchone()
        conn.close()
        if row is None:
            return False
        else:
            encrypted_password = row[0]
            key = load_key()
            f = Fernet(key)
            try:
                decrypted_password = f.decrypt(encrypted_password).decode()
                return decrypted_password == password
            except Exception:
                return False
    
    # Uygulama akışı
    def main():
        create_db()
        try:
            load_key()
        except FileNotFoundError:
            generate_key()  # Anahtarı bir kez oluştur
    
        while True:
            choice = input("1. Kaydol\n2. Giriş\n3. Çık\nSeçiminiz: ")
            if choice == "1":
                username = input("Kullanıcı adı: ")
                password = input("Şifre: ")
                encrypted_password = encrypt_password(password)
                add_user(username, encrypted_password)
                print("Kayıt başarılı!")
            elif choice == "2":
                username = input("Kullanıcı adı: ")
                password = input("Şifre: ")
                if login(username, password):
                    print("Giriş başarılı!")
                else:
                    print("Giriş başarısız!")
            elif choice == "3":
                break
            else:
                print("Geçersiz seçim!")
    
    if __name__ == "__main__":
        main()

    Bir kaç düzeltme yaptı mtekrar iyi akşamlar.çalışmaz ise
    pip install cryptography sqlite3
    yazmanız gerekbilir saygılar
  • 29-10-2024, 19:55:46
    #3
    daggez adlı üyeden alıntı: mesajı görüntüle
    from cryptography.fernet import Fernet
    import sqlite3
    
    # Veritabanı oluşturma
    def create_db():
        conn = sqlite3.connect('password_manager.db')  # Veritabanı dosyası
        c = conn.cursor()
        c.execute('''
        CREATE TABLE IF NOT EXISTS users (
        username TEXT PRIMARY KEY,
        password TEXT NOT NULL
        )
        ''')
        conn.commit()
        conn.close()
    
    # Şifreleme anahtarı oluşturma
    def generate_key():
        key = Fernet.generate_key()
        with open("secret.key", "wb") as key_file:
            key_file.write(key)
    
    # Anahtarı yükleme
    def load_key():
        return open("secret.key", "rb").read()
    
    # Şifreleme
    def encrypt_password(password):
        key = load_key()
        f = Fernet(key)
        encrypted_password = f.encrypt(password.encode())
        return encrypted_password
    
    # Şifreleri veritabanına ekleme
    def add_user(username, password):
        conn = sqlite3.connect('password_manager.db')
        c = conn.cursor()
        c.execute("INSERT INTO users (username, password) VALUES (?, ?)", (username, password))
        conn.commit()
        conn.close()
    
    # Giriş kontrolü
    def login(username, password):
        conn = sqlite3.connect('password_manager.db')
        c = conn.cursor()
        c.execute("SELECT password FROM users WHERE username=?", (username,))
        row = c.fetchone()
        conn.close()
        if row is None:
            return False
        else:
            encrypted_password = row[0]
            key = load_key()
            f = Fernet(key)
            try:
                decrypted_password = f.decrypt(encrypted_password).decode()
                return decrypted_password == password
            except Exception:
                return False
    
    # Uygulama akışı
    def main():
        create_db()
        try:
            load_key()
        except FileNotFoundError:
            generate_key()  # Anahtarı bir kez oluştur
    
        while True:
            choice = input("1. Kaydol\n2. Giriş\n3. Çık\nSeçiminiz: ")
            if choice == "1":
                username = input("Kullanıcı adı: ")
                password = input("Şifre: ")
                encrypted_password = encrypt_password(password)
                add_user(username, encrypted_password)
                print("Kayıt başarılı!")
            elif choice == "2":
                username = input("Kullanıcı adı: ")
                password = input("Şifre: ")
                if login(username, password):
                    print("Giriş başarılı!")
                else:
                    print("Giriş başarısız!")
            elif choice == "3":
                break
            else:
                print("Geçersiz seçim!")
    
    if __name__ == "__main__":
        main()
    Bir kaç düzeltme yaptı mtekrar iyi akşamlar.çalışmaz ise
    pip install cryptography sqlite3
    yazmanız gerekbilir saygılar
    hocam sadece giriş başarılı diyen bir kod oldu başka bir işlev yapmamakta. ben giriş login ekranından sonra işlevleri yapmasını istiyorum bu sadece giriş yapıyor
  • 29-10-2024, 19:59:04
    #4
    Bu kod kullanıcıların şifrelerini güvenli bir şekilde saklayarak bir veritabanında depolayan ve giriş işlemi için şifre doğrulaması yapabilen bir şifre yöneticisi sizin istediğiniz bu değil miydi. Giriş var sonra orada databaseye kaydediyor karşılaştırıp doğru ise giriş yapıyor yanlış ise hata veriyor.
  • 29-10-2024, 20:01:39
    #5
    daggez adlı üyeden alıntı: mesajı görüntüle
    Bu kod kullanıcıların şifrelerini güvenli bir şekilde saklayarak bir veritabanında depolayan ve giriş işlemi için şifre doğrulaması yapabilen bir şifre yöneticisi sizin istediğiniz bu değil miydi. Giriş var sonra orada databaseye kaydediyor karşılaştırıp doğru ise giriş yapıyor yanlış ise hata veriyor.
    hayır hocam ben password manager olarak dediğimde bir giriş login ekranı olucak ve bu kişi instagram google vs gibi şifre bilgilerini burada saklayacak tekrar giriş yaptığında da burdan ulaşabilecek. Şifreler veritabanında ise 256bit olarak saklanacak ki çalınma önlensin