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 № 1To 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.