在 Postgresql 中加密和解密哈希 sha256

Encrypt And Decrypt Hash sha256 in Postgresql

我正在尝试使用 sha256 在 postgresql 中散列一个字符串,如下所示:

select digest('This is a test','sha256');

这个 returns 散列值以下:

\xc7be1ed902fb8dd4d48997c6452f5d7e509fbcdbe2808b16bcf4edce4c07d14e

现在我想使用这个散列值检索我的初始字符串,但无法在 postgres 文档中找到任何关于它的信息,任何关于它的帮助都将非常有用。

散列加密有区别:

  • 可以解密加密值以恢复原始值,因此加密是无损的,两个不同的明文值总是会产生不同的加密值

  • 一个散列无法解密,因为信息丢失;不同的值可能会产生相同的散列值,尽管这些“冲突”最好不要经常发生

散列是不可逆的,而加密是可逆的。

现在digest is a hashing function:

digest(data text, type text) returns bytea
digest(data bytea, type text) returns bytea

Computes a binary hash of the given <em>data</em>.

因此您将无法恢复原始字符串。

您可以在 Postgresql 中使用 pgcrypto 扩展来保存加密后的数据。

插入,

INSERT INTO tablename (columnname1, columnname2) VALUES (PGP_SYM_ENCRYPT('value1', 'aes_key'), PGP_SYM_ENCRYPT('value2', 'aes_key'));

用于抓取,

SELECT PGP_SYM_DECRYPT(columnname1::bytea, 'aes_key') as columnname1, PGP_SYM_DECRYPT(columnname2::bytea, 'aes_key') as columnname2 from tablename;