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