MYSQL


게시글 'Mysql AES_ENCRYPT, AES_DECRYPT 함수를 이용한 사용자 함수'에 대한 정보
Mysql AES_ENCRYPT, AES_DECRYPT 함수를 이용한 사용자 함수
등록일 2012-11-19 조회 3,468

$encryptKey = "TEST_A2B2E3";

## ASE ENCODE INSERT STRING
function ASE_ENCODE_IN($ENC_VALUE){ 
 global $encryptKey; 
 return !empty($ENC_VALUE) ? " (HEX(AES_ENCRYPT(CAST('".addslashes($ENC_VALUE)."' AS CHAR), '".$encryptKey."'))) ":" '' "; 
}

## ASE DECODE SELECT STRING
function ASE_DECODE_OUT($DEC_KEY){
 global $encryptKey; 
 return !empty($DEC_KEY) ? " CAST(AES_DECRYPT(UNHEX(".$DEC_KEY."), '".$encryptKey."') AS CHAR) AS ".$DEC_KEY." ":""; 
}

## ASE ENCODE VIEW
function ASE_ENCODE_VIEW($ENC_VALUE){ 
 global $encryptKey;
n !empty($ENC_VALUE) ? mysql_result(mysql_query("SELECT (HEX(AES_ENCRYPT(CAST('".addslashes($ENC_VALUE)."' AS CHAR), '".$encryptKey."'))) "), 0, 0) : "";

}

## ASE DECODE VIEW
function ASE_DECODE_VIEW($DEC_VALUE){  
 global $encryptKey; 
 return !empty($DEC_VALUE) ? mysql_result(mysql_query("SELECT CAST(AES_DECRYPT(UNHEX('".$DEC_VALUE."'), '".$encryptKey."') AS CHAR) "), 0, 0) : "";
}


## AES_ENCRYPT 암호화
echo($EnData = ASE_ENCODE_VIEW($DataValue))."<br />";
## 결과 : E0545FFF39FD73A3B8372D33A76D60BB140553B8201026F20D5D55F3302A6400


## AES_DECRYPT 복호화
echo($DeData = ASE_DECODE_VIEW($EnData))."<br />";
## 결과 : 테스트1234(test1234)


## encrypt 테이블 INSERT
$encryptINSERT = mysql_query("INSERT INTO encrypt SET test=".ASE_ENCODE_IN($DataValue));

## encrypt 테이블 test 필드 SELECT
$encryptSELECT = mysql_query("SELECT *,".ASE_DECODE_OUT('test')." FROM encrypt");
while($rowData = mysql_fetch_array($encryptSELECT)){
 echo $rowData[test]."<br />";
}

 

DB 문자셋과 페이지 문자셋을 주의하며 작업해야 합니다. 실제 DB UTF-8에서 mysql web admin에서의 쿼리 값과 euc-kr 페이지값은 서로 다르게 인식됩니다.