2011-09-30 6 views
5

필드가 AES_ENCYPTED 인 경우 어떻게 WHERE와 LIKE serach로 MySQL SELECT를 수행 할 수 있습니까?MYSQL SELECT WHERE LIKE AES_ENCRYPT

예 :

기본적
SELECT AES_DECRYPT(place,'"+salt+"'),AES_DECRYPT(web_address,'"+salt+"') 
FROM access 
WHERE place= LIKE '%(AES_ENCRYPT('"+searchStr+"','"+salt+"'))',%') 

는 먼저 복호화하지 않고 암호화 된 열을 검색 할 수 $searchStr

+0

입니까? – genesis

+0

(PHP 변수) $ query = (MYSQL statement string) – user963206

답변

8

의 양단에 LIKE 와일드 카드 암호화 컬럼에 대한 검색을 수행한다.

WHERE AES_DECRYPT(like, salt) LIKE '%something%'을 수행해야하지만 속도가 매우 느릴 것입니다.

+0

시도했지만 작동하지는 않겠지 만 올바른 길에 있다고 생각합니다 ... (느린 것은 작은 웹 응용 프로그램으로는 문제가되지 않습니다) – user963206

+0

나는 ' 위의 의견 - 당신은 전설입니다. 나는 도중에 미성년자 '='를 낳았습니다. 고마워요. – user963206

+0

이것은 작동하지 않습니다. 누구든지 값을 해독하는 다른 방법을 제안 할 수 있습니까? – Vicky

3

MySQL과 함께 AES_ENCRYPTED 필드에 SELECT LIKE를 사용하는 간단한 방법을 찾고있었습니다. 최고의 작품 하나입니다

SELECT * FROM table 
WHERE CONVERT(AES_DECRYPT(`haystack`,'key') USING utf8) LIKE '%needle%' 

나는 PHP 5 수천 개의 행을 처리 할 때이 아주 잘 실행

를 사용하여 MySQL의 5에 검사를하지,하지만 인해 매우 큰 테이블에 적합하지 않을 수 있습니다 암호 해독 및 변환.

이 기본 PHP 코드입니다 : 그것은 어떤 언어

$key = md5("yourchosenkey".$salt);  
$query = "SELECT * FROM ".$tableName." ". 
     "WHERE CONVERT(AES_DECRYPT(`haystack`,'".$key."') USING utf8) ". 
     "LIKE '%".addslashes($needle)."%'";