在PostgreSQL中存储SHA1十六进制值

时间:2013-03-25 03:41:32

标签: php postgresql hex sha1

看似简单的问题,对应于关于MySQL的另一个问题:如何在PostgreSQL数据库中存储由SHA1哈希产生的十六进制值?

注意:我意识到我可以使用VARCHAR(40)字段,但这不是很有效,因为数据是十六进制的。此外,我使用PHP与数据库进行交互,因此我可以在必要时使用PHP函数,但如果是这种情况,我将如何将结果存储在数据库中?

1 个答案:

答案 0 :(得分:2)

我将存储为bytea,十六进制编码。将人类可读的十六进制数据转换为bytea只是一个问题:

  ('\x' || sha1_hex_value)::bytea

这里唯一真正的缺点是,根据您的应用程序框架,您可能会获得二进制表示。如果不是,您将获得转义版本,并且根据转义设置,可能希望自己转换为二进制(如果它是十六进制,但您可以剥离值前面的\x并使用十六进制)