提问者:小点点

解密对于在加密记录上使用解密值进行查询的记录不起作用


我有一个用户表,我需要存储电子邮件的加密格式。我可以通过在用户模型中设置值加密为true来做到这一点。但当我试图获取基于电子邮件ID的数据时。我正在以没有加密值的纯文本格式传递电子邮件id,并尝试查找具有该值的记录。但我不能够发现,价值永远是空的。

有没有方法用解密的值查询记录,而存储的值是以加密格式存储的??

下面是我正在尝试做的代码片段。

module.exports = {

  attributes: {

    //  ╔═╗╦═╗╦╔╦╗╦╔╦╗╦╦  ╦╔═╗╔═╗
    //  ╠═╝╠╦╝║║║║║ ║ ║╚╗╔╝║╣ ╚═╗
    //  ╩  ╩╚═╩╩ ╩╩ ╩ ╩ ╚╝ ╚═╝╚═╝
    email: { 
      type: 'string',
      required: true,
      isEmail: true,
      encrypt: true,
      maxLength: 512,
    }
  }
}

在表中保存记录

await User.create({email: 'abc@domain.com'})

使用此电子邮件查找记录

let userData = await User.find({email: 'abc@domain.com'}).decrypt();
console.log('user Data', userData)

我得到的输出是空数组,而不是具有匹配记录的数组

user data []

我也试过没有解密。它也在给空值。


共1个答案

匿名用户

当然,加密数据库字段(如电子邮件)的全部目的是使网络蠕虫很难搜索特定值。

您可以尝试在搜索前加密您的搜索值。。。。像这样的。

const emailEncrypted = 'abc@domain.com'.encrypt()
let userData = await User.find({email: emailEncrypted}).decrypt()
console.log('user Data', userData)