无法解密通过generate_password_hash

时间:2015-09-04 11:47:19

标签: python flask flask-sqlalchemy

我有表格,其中我有几列如下,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)

请帮我解决这个问题。 非常感谢你花时间回答这个问题。

1 个答案:

答案 0 :(得分:3)

这是不可能的。哈希的整点是这样的,即看到数据库值的人看不到实际值。比较哈希值时,会对输入值进行哈希处理并比较哈希值,不会发生解密。您应该永远以可逆的形式存储用户密码。

加密与散列不同。如果要加密某个值并在以后解密,则需要使用其他解决方案。例如,cryptography包提供了用于使用密钥加密的Fernet算法。