我有表格,其中我有几列如下,EC3列加密我使用加密,这是盐密码envcrytion 这个表有多行,我想显示网页中的每一行,但是有加密字段的列应该转换回原来的 在网页上显示
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)
我的目标是从表中获取记录并显示它我正在使用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)
请帮我解决这个问题。 非常感谢你花时间回答这个问题。
答案 0 :(得分:3)
这是不可能的。哈希的整点是这样的,即看到数据库值的人看不到实际值。比较哈希值时,会对输入值进行哈希处理并比较哈希值,不会发生解密。您应该永远以可逆的形式存储用户密码。
加密与散列不同。如果要加密某个值并在以后解密,则需要使用其他解决方案。例如,cryptography包提供了用于使用密钥加密的Fernet算法。