2017-11-04 1 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 당신이 어떤을 위해 parent_id을 반환 한 후, 다른 단어로 검색 쿼리를 구성하는 자신의 해시를 계산하고, 할 수있을 것입니다이 시점에서

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

을 (인덱스 단어는 암호화 된 부모 해시) 성냥. 에 대해서만 개의 단어가 작동합니다. 모든 변형은 계산 된 해시를 변경하므로 모든 것을 강제로 소문자로 만들 수 있습니다.

"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 
관련 문제