簡體   English   中英

如何將 postgres pgcrypto 與 Nodejs 和 Sequelize 一起使用?

[英]How to use postgres pgcrypto with Nodejs and Sequelize?

  1. 如何在 postgres 中使用帶有 pgcrypto 插件的 sequelize。
  2. 如何使用 sequelize 加密和解密列的值
  3. 如何使用 nodejs 和 sequelize 使用 PGP_SYM_ENCRYPT 和 PGP_SYM_DECRYPT

我將從您需要遵循的步驟開始介紹:)

將 pgcrypto 插件添加到您正在使用的模式中的步驟

  1. 登錄到 postgres 並轉到使用的 Schema或者如果您正在運行pgadmin ... goto Schema... 右鍵單擊... 單擊Query Tool

  2. 在此處運行此查詢以檢查您的 postgres 中的可用插件 -

select * from pg_available_extensions

上面的命令將幫助您了解 Postgres 中已有的所有插件。 滾動並檢查pgcrypto是否可用。 如果是...繼續第 3 點,否則請先下載 pgcrypto 插件。

  1. 運行另一個查詢,這將幫助您了解您在第 (1) 點中選擇的 Schema 中有哪些插件 -
select * from pg_extension

上面的命令將幫助您了解您選擇的 Schema 支持的所有 pluings。 檢查pgcrypto是否存在,如果是 - 跳到第 (5) 點,如果沒有 - 繼續到第 (4) 點

  1. 運行此命令以將pgcrypto插件從擴展帶到當前 Schema 支持的擴展 -
create extension pgcrypto

您可以在第 (3) 點驗證運行 cmd 以檢查 pgcrypto 是否已成功拉入當前 Schema 支持的插件。


現在我們准備在我們的 Nodejs 應用程序中使用 pgcrypto

  1. 對於要加密的查詢,請使用sequelize對其進行加密。 使用下面的代碼將該列的文本值修改為加密值。

     query: sequelize.fn("PGP_SYM_ENCRYPT", "data_to_encrypt", "secret_key")
  2. 當您使用create將數據保存到數據庫時 - 數據將使用 PGP_SYM_ENCRYPT 加密,這是 pgcrypto 插件提供的一種方法。

  3. 要立即查詢或解密這些值,您可以在 postgres 中運行此查詢

select PGP_SYM_DECRYPT(colum_name::bytea, 'secret_key') FROM table where PGP_SYM_DECRYPT(column_name::bytea, 'secret_key' LIKE '%search_string%';
  1. 要解密 Node 應用程序中的值,請使用:
sequelize.findAll({
  attribute: [
    [
      sequelize.fn(
        'PGP_SYM_DECRYPT',
        sequelize.cast(sequelize.col('column_name'), 'bytea'), 
        'secret_key'
      ), 
      "column_name"
    ]
  ]
}).then(data => console.log(data))

注意:要自動化第一部分(將擴展名添加到 Schema 中),您可以使用sequelize raw query ,這樣您就不必每次都手動進行。

CREATE EXTENSION IF NOT EXISTS pgcrypto;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM