/ / Nie można odszyfrować wartości wyświetlanej przez parametr generate_password_hash - python, kolba, flask-sqlalchemy

Nie można odszyfrować wartości dla ekranu, który został przekazany przez generator_password_hash - python, flask, flask-sqlalchemy

Mam tabelę, w której mam kilka kolumnsą następujące i kolumna EC3 jest zaszyfrowana. Użyłem szyfrowania, które służy do szyfrowania hasła solnego Ta tabela ma więcej niż jeden wiersz i chcę wyświetlić każdy wiersz na stronie internetowej, ale kolumna, która ma zaszyfrowane dane, powinna zostać przekonwertowana z powrotem na oryginalną, gdy wyświetlanie na stronie internetowej

T1
----C1 Varchar(20)
----C2 int
----EC3 varchar(256)
----C4 datetime

W klasie My Model

@property
def ec(self):
raise AttributeError("ec is not readable attribute")


@ec.setter
def ec(self,ec):
self.ec3 = generate_password_hash(ec)


def verify_ec(self,ec):
return check_password_hash(self.ec3,ec)

Moim celem jest zdobycie rekordów z tabeli idiplay it Do tego używam Flask i SQL Alchemy. Kiedy będę go wyświetlać na stronie internetowej, kolumna EC3 powinna być pokazana jako de crypted.Since jestem nowy w SQL Alchemy. Trudno jest znaleźć wybraną pojedynczą kolumnę, a nawet jak wyświetlić wszystkie wiersze w pojedynczym zapytaniu, biorąc każdą kolumnę EC3 powinny być deszyfrowane.

To jest mój dekorator widoków

@app.route("/listallEC3")
@login_required
def listallEC3():
decodeEC3 = T1.query.filter_by(u_id = current_user.id).first()

finalEC3=decodeEC3.verify_ec(decodeEC3)
return render_template("EC3/viewallEC3.html",finalEC3 = finalEC3)

Pomóż mi to naprawić. Dziękuję bardzo za poświęcenie czasu na odpowiedź.

Odpowiedzi:

3 dla odpowiedzi № 1

To jest niemożliwe. The cały punkt mieszania jest tak, że ktoś, kto widzi wartość bazy danych, nie widzi rzeczywistej wartości. Porównując skróty, wartość wejściowa jest mieszana i hashe są porównywane, nie występuje deszyfrowanie. Powinieneś nigdy przechowuj hasła użytkowników w formie, która jest odwracalna.

Szyfrowanie to nie to samo, co hashowanie. Jeśli chcesz zaszyfrować wartość i odszyfrować ją później, musisz użyć innego rozwiązania. Na przykład kryptografia pakiet oferuje algorytm Fernet do szyfrowania za pomocą tajnego klucza.