2017-11-04 3 views
1

ノードjsを使用してDB内の暗号化されたデータを検索する最良の方法はありますか?Node.jsで暗号化されたテキストを検索

私はDBに暗号化されたデータを保存しました。コードで暗号化されたテキストを検索するにはどうすればよいですか?

例:

$ 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 

答えて

0

あなたが暗号化されたテキストを検索することはできません - 最初の場所でそれを暗号化の目的を台無しにしてしまいます。文字列の異なる部分が完全に異なる値に暗号化されていることに気付いたように、これは設計によるものであるか、暗号化をもっと簡単にすることになります。

あなたはになります。 doは、検索し、それらのハッシュを別のテーブルに保存して親に戻すテキストのハッシュです。

parent(暗号化された文字列)

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

次に、あなたはstringwordに部品を分解します。このアレイ上

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

反復し、「インデックス」テーブルにこれらのハッシュを挿入し、wordsのそれぞれについてハッシュを計算します。

words(索引語が暗号化された親にハッシュ)

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 
関連する問題