如何解决解密不适用于以加密值查询加密记录的记录
我有一个用户表,我需要在其中存储加密格式的电子邮件。我可以通过在用户模型中将加密的值设置为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 []
我也尝试不解密。它还提供了空值。
解决方法
当然,对数据库字段(如电子邮件)进行加密的全部目的是使网络蠕虫很难搜索特定值。
您可以在搜索之前尝试加密搜索值。...类似这样的东西。
const emailEncrypted = 'abc@domain.com'.encrypt()
let userData = await User.find({email: emailEncrypted}).decrypt()
console.log('user Data',userData)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。