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