gpt4 book ai didi

node.js - 在 Node.js 中搜索加密文本

转载 作者:太空宇宙 更新时间:2023-11-04 01:58:05 25 4
gpt4 key购买 nike

有没有使用Node js搜索数据库中加密数据的最佳方法?

我将加密数据存储在数据库中。如何通过Code查询密文?

示例:

$ node encrypt.js 123 'hello my friend'
90cbf635540412a202eb46dada1fcf

$ node encrypt.js 123 'hello'
90cbf63554

$ node encrypt.js 123 ' my '
d8c3e379

$ node encrypt.js 123 'friend'
9edcf33c5540

最佳答案

您无法搜索加密文本 - 这首先就违背了加密文本的目的。正如您所注意到的,字符串的不同部分将加密为完全不同的值 - 这是设计使然,否则会使您的加密更容易被破解。

可以做的是对要搜索的文本进行散列,并将这些散列存储在不同的表引用中返回到父级。

parent(加密字符串)

id        string
1 xyzxyzxyzxyzxyzxyz (encrypted 'hello my friend')

然后您可以将字符串分解为单词组件。

var words = string.split(' '); // words is an array of ['hello', 'my', 'friend']

迭代此数组并计算每个单词的哈希值,然后将这些哈希值插入到“索引”表中。

单词(索引单词散列到加密的父级)

id     parent_id     hash
1 1 abc (hash of "hello")
2 1 def (hash of "my")
3 1 ghi (hash of "friend")

此时,您将能够将搜索查询组成不同的单词,计算它们的哈希值,然后返回任何匹配项的 parent_id。请注意,这仅适用于完整单词 - 任何变化都会改变计算的哈希值,因此您可能想要强制所有内容都小写。

假设您正在搜索“hello”,您将计算其“abc”的哈希值,然后运行以下 SQL 查询。

SELECT p.id, p.string 
FROM parent p
JOIN words w ON p.id = w.parent_id
WHERE w.hash IN ('abc')
GROUP BY p.id

关于node.js - 在 Node.js 中搜索加密文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47114566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com