【问题标题】:Automatic password hashing in PostgreSQLPostgreSQL 中的自动密码散列
【发布时间】:2016-05-03 18:50:30
【问题描述】:

过去几周我一直在使用 PostgreSQL,我一直很喜欢它!

我使用 crypt() 和 gen_salt() 生成密码哈希,方法是将其添加到插入查询中,如下所示:

crypt(:password, gen_salt('bf', 8))

对于选择我使用类似的东西:

crypt(:password, u.password)

我想通过自动化表密码列上的哈希来简化我的 SQL 代码,而不是 SQL 查询或附加函数。

更清楚地说,当我在表中插入一行时,我希望它立即转换散列/比较。

有办法吗?如果是的话,那会是明智的吗?

【问题讨论】:

  • 所以你有一个表,你在里面存储了一个密码哈希,但是你的问题很“神秘”哈哈。说真的,自动化(automating)是什么意思?哪些 SQL 查询或附加功能?你想达到什么目标?
  • 是的,抱歉,您可能是对的。所以......我有一个工作正常的查询。但是我想从查询中删除 crypt(:password, gen_salt('bf', 8)) ,广告以某种方式在表的列本身上实现它,所以每次添加一个值时,都会立即对其进行散列和/或比较到哈希。

标签: postgresql password-hash pgcrypto


【解决方案1】:

我不会评论“这是否明智?”问题的一部分(不是因为我认为这是不明智的,而是因为我对您的需求了解不够)。

如果您想在 INSERT 或 UPDATE 期间自动计算列值,则需要一个触发器(请参阅CREATE TRIGGER)。

如果您想在 SELECT 期间自动计算列值,则需要一个视图(请参阅CREATE VIEW)。

还有其他方法可以实现您的要求,但触发器和视图可能是最直接的机制。

【讨论】:

  • 感谢您的提示,我明天会检查并回复您!
猜你喜欢
  • 2011-02-08
  • 1970-01-01
  • 1970-01-01
  • 2011-02-18
  • 1970-01-01
  • 2019-02-15
  • 1970-01-01
  • 2012-12-10
  • 2015-08-13
相关资源
最近更新 更多