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 |