/ / Неможливо розшифрувати значення для відображення, яке було передано через create_password_hash - python, flask, flask-sqlalchemy

Неможливо розшифрувати значення для дисплея, яке було передано через create_password_hash - python, flask, flask-sqlalchemy

У мене є таблиця, в якій у мене є кілька стовпців, якіє наступними, і колонка EC3 зашифрована, я використовував шифрування, яке є для шифрування паролем солі Ця таблиця має більше, ніж один рядок, і я хочу відображати кожен рядок на веб-сторінці, але стовпець, який зашифровано подано, повинен бути перетворений на початковий, коли відображення на веб-сторінці

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

У класі Моя модель

@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)

Моя мета тут - отримати записи з таблиці таdeplay it Я використовую Flask та SQL Alchemy для цього. Коли я буду відображати його, у стовпці EC3 на веб-сторінці слід відображатись як de crypted. Тому що я новачок у SQL Alchemy, мені важко знайти виділення одного стовпця та навіть, як переглянути всі рядки в одному запиті, приймаючи кожен рядок стовпця EC3 має бути де зашифровано.

Це мій декоратор подання

@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)

Будь ласка, допоможіть мені виправити це. Дуже дякую, що знайшли свій час, щоб відповісти на це.

Відповіді:

3 для відповіді № 1

Це неможливо. The цілковита точка хешування - це те, що той, хто бачить значення бази даних, не бачить реального значення. При порівнянні хешей вхідне значення хешируется і хеші порівнюються, дешифрування не відбувається. Ти повинен ніколи зберігати паролі користувачів у формі, яка є оборотною.

Шифрування не те саме, що хешування. Якщо ви хочете зашифрувати значення та розшифрувати його пізніше, вам потрібно буде використовувати інше рішення. Наприклад, криптографія пакунок пропонує алгоритм Fernet для шифрування секретним ключем.