Когда я запускаю следующий код, не заключая его в класс, обе функции выполняют именно то, что и ожидалось, что должно быть очевидно из приведенного ниже кода.
Однако, как только я собрал их в класс, только функция getPass
фактически возвращает значение. Я ожидаю, что будут напечатаны две строки: одна с random string(password)
и одна с зашифрованным string(password)
.
Что мне здесь не хватает? Я попытался включить self
перед переменными в функции encryptPasswd
, я попытался включить encryptPasswd
в конструкторе (с self
перед ним) и многие другие комбинации подобных тактик. Я не могу понять, почему он не возвращает зашифрованную строку. Пожалуйста помоги. Вот код (кстати, библиотека sqlite3
импортирована для последующего использования):
import string
import secrets
import sqlite3
from cryptography.fernet import Fernet
class generateEncyptedPasswd:
def __init__(self):
self.length = int(input("Enter the length of password: "))
self.password = self.getPass(self.length)
self.passwdInBytes = str.encode(self.password)
self.encryptPasswd
print(self.password)
def getPass(self, length):
return "".join(
secrets.choice(
string.ascii_uppercase
+ string.ascii_lowercase
+ string.digits
+ string.punctuation
)
for x in range(length)
)
def encryptPasswd(self, password):
key = Fernet.generate_key()
cipher = Fernet(key)
passwd = self.passwdInBytes
encryptedPasswd = cipher.encrypt(self.passwd)
print(self.encryptedPasswd)
generateEncyptedPassw()