如何使用 Sequelize 从 PostgreSQL 检索加密数据?

问题描述

我想创建一个虚拟数据库,其中有一个包含用户的表。我希望我的用户拥有 firstName 和 lastName 属性。 firstName 是使用非对称加密的 PGP 加密,而 lastName 未加密。我知道这不是一个常见的用例,但我想通过他/她的名字检索一个特定用户

我的数据库中已有数据。 firstName 是一个字节类型的二进制数据,因为它应该是,而 lastName 只是 varChar。如果需要,我可以以解密的方式检索所有用户,但我无法创建查询搜索特定用户

const pgpEncrypt = (data,dearmoredPublicKey) => {
  return Sequelize.fn(
    'PGP_PUB_ENCRYPT',data,dearmoredPublicKey
  )
}

const pgpDecrypt = (columnName: string,deArmoredPrivateKey: any,keyPassphrase: string) => {
  return Sequelize.fn(
    'PGP_PUB_DECRYPT',Sequelize.cast(Sequelize.col(columnName),'bytea'),deArmoredPrivateKey,keyPassphrase
  )
}

...

const allUsers = await User.findAll({
  attributes: [
    [pgpDecrypt('firstName',postgresDearmoredPrivateKey,pKeyPassphrase),'firstName']
  ]
})


在所有用户中,我以解密的方式拥有我想要的东西。但是我怎样才能通过名字只搜索一个特定的用户呢?无论我如何尝试,我似乎都无法向“findOne”添加正确的参数。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)