2011-05-11 4 views
0

vb6 및 mysql에서 클라이언트 소프트웨어를 개발했습니다. 이 테이블입니다전체 테이블 검색 및 데이터 암호화

CREATE TABLE IF NOT EXISTS `main_table` (
    `f_id` int(11) NOT NULL DEFAULT '0', 
    `id` mediumint(15) NOT NULL AUTO_INCREMENT, 
    `text_to_encrypt` mediumtext 
    PRIMARY KEY (`id`), 
    KEY `f_id` (`f_id`) 
); 

클라이언트는 데이터가 text_to_encrypt의 열을 암호화하려고합니다. 이제는 데이터를 암호화하는 것이 매우 쉽지만 실제 문제는 사용자가 제공 한 키워드로 전체 텍스트를 검색 할 수 있고 암호화 된 데이터를 해독 한 후 데이터를 표시한다는 것입니다. 이 열은 약 900,000이며 증가 할 예정입니다. Windows OS 용 솔루션을 원합니다. 무엇을해야합니까? 클라이언트가 뭔가 다음 클라이언트 는 당신이 암호를 해독하지 않고 키워드 암호화 된 데이터를 검색 할 수 없습니다 알고을 가지고 행동해야 방법 을 결정하는 하나의 경우

답변

0

.

즉, 테이블의 전체 내용을 가져 와서 해독 한 다음 검색하는 것을 의미합니다.

+0

예.하지만 매번 테이블을 해독 한 다음 짧은 시간에 큰 레코드를 해독 할 수 없으므로 해독 된 테이블을 삭제 한 다음 삭제할 때 많은 시간이 걸릴 수 있습니다. – Vineet1982

0

검색 할 텍스트 콘텐츠를 모두 암호화하고 색인을 생성하는 것이 좋습니다. 텍스트가 "Hello world!"인 경우 암호화 된 "hello"및 "world"를 저장 한 다음 초기 레코드를 기록 할 때 암호화 된 텍스트 필드에 매핑 된 레코드를 검색합니다.

+1

롤링 암호화, 소금 또는 이와 유사한 것이 없다고 가정하면 매우 취약합니다. 모든 개별 단어는 매번 동일한 문자열로 암호화해야하므로 ROT 암호화 이상의 의미는 아닙니다. – Deanna

+0

그건 중요한 지적입니다. 그리고 소금을 사용하는 것과 같은 무엇인가? 우리는 OP와 비슷한 문제를 겪고 있으며 제안한 것과 같은 방법을 고려 중입니다. 아래는 길에서 문자열을 암호화하는 방법입니다 : $ salt = self :: getSalt(); $ string = trim ($ string); $ size = mcrypt_get_iv_size (MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB); $ iv = mcrypt_create_iv ($ size, MCRYPT_RAND); $ encrypted = mcrypt_encrypt (MCRYPT_RIJNDAEL_128, $ salt, $ string, MCRYPT_MODE_ECB, $ iv); return bin2hex ($ encrypted); 의견에 감사드립니다. –

관련 문제