pgcrypto PostgreSQL 扩展提供了加密功能,例如

  • 通用哈希
  • 密码哈希
  • PGP 加密
  • 原始加密
  • 随机数据

有关这些功能和可用选项的更多信息,请参阅 pgcrypto 文档

pgcrypto 扩展允许您在数据库中加密、解密、哈希和创建数字签名。Timescale 理解您的数据有多么宝贵,并保护敏感信息。

  1. 安装 pgcrypto 扩展

    CREATE EXTENSION IF NOT EXISTS pgcrypto;
  2. 您可以使用 \dx 命令确认扩展是否已安装。已安装的扩展将列出

    List of installed extensions
    Name | Version | Schema | Description
    ---------------------+---------+------------+---------------------------------------------------------------------------------------
    pg_stat_statements | 1.10 | public | track planning and execution statistics of all SQL statements executed
    pgcrypto | 1.3 | public | cryptographic functions
    plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
    timescaledb | 2.11.0 | public | Enables scalable inserts and complex queries for time-series data (Community Edition)
    timescaledb_toolkit | 1.16.0 | public | Library of analytical hyperfunctions, time-series pipelining, and other SQL utilities
  3. 创建一个名为 user_passwords 的表

    CREATE TABLE user_passwords (username varchar(100) PRIMARY KEY, crypttext text);
  4. 将值插入到 user_passwords 表中,并将 <Password_Key> 替换为您选择的密码密钥

    INSERT INTO tbl_sym_crypt (username, crypttext)
    VALUES ('user1', pgp_sym_encrypt('user1_password','<Password_Key>')),
    ('user2', pgp_sym_encrypt('user2_password','<Password_Key>'));
  5. 您可以使用以下命令确认密码已加密

    SELECT * FROM user_passwords;

    加密后的密码将列出

    username | crypttext
    ----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------
    user1 | \xc30d040703025caa37f9d1c731d169d240018529d6f0002b2948905a87e4787efaa0046e58fd3f04ee95594bea1803807063321f62c9651cbf0422b04508093df9644a76684b504b317cf633552fcf164f
    user2 | \xc30d0407030279bbcf760b81d3de73d23c01c04142632fc8527c0c1b17cc954c77f16df46022acddc565fd18f0f0f761ddb2f31b21c4ebe47a48039d685287d64506029e027cf29b5493b574df
    (2 rows)
  6. 要查看解密的密码,请将 <Password_Key> 替换为您创建的密码密钥

    SELECT username, pgp_sym_decrypt(crypttext::bytea, '<Password_Key>')
    FROM user_passwords;

    解密后的密码将列出

    username | pgp_sym_decrypt
    ----------+-----------------
    user1 | user1_password
    user2 | user2_password
    (2 rows)

关键词

在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页面