MySQL & MariaDB2017. 4. 7. 12:24

MySql과 MariaDB에는 데이터를 암호화 해주는 Function이 있다.


AES_ENCRYPT와 AES_DECRYPT가 있는데..

이 함수만을 쓴다고 암호화와 복호화가 되는것이 아니라 HEX와 UNHEX를 사용해서 보기좋은 문자열로 만들어 줘야한다.

사용방법은 AES_ENCRYPT에 암호화할 문자열과 키로 사용할 문자열을 같이 넣어주면 된다.


SELECT HEX(AES_ENCRYPT('암호화할 문자열', 'Key');


위는 문자열을 암호화 하는 방법이고 아래는 암호화한 문자열을 복호화 하는 방법.


SELECT AES_DECRYPT(UNHEX('암호화된 문자열'), 'Key');


근데 여기서 문제점은 위의 방법으로 데이터를 암호화 해서 Table에 Insert하고 암호화 된 데이터를 테이블에서 Select하는 과정에서 생긴다. 분명 쿼리를 실행하면 제대로 된 데이터가 나오는데..

실제로 Java에서 데이터를 불러오면 아스키 코드가 결과값으로 출력 되는 현상이 생겨버린다.


이럴땐 CAST함수를 사용하면 된다.


CAST(AES_DECRYPT(UNHEX('암호화된 문자열'), 'Key')AS CHAR)


위와 같이 사용하면 제대로 된 문자열이 출력 되는것을 볼수 있다.


'MySQL & MariaDB' 카테고리의 다른 글

IFNULL..  (0) 2017.03.20
Column count doesn't match value count at row 1 에러..  (0) 2014.12.01
Posted by Z700zZz