PostgreSQL의 문자열 암호화

PostgreSQL 자체 기능 만으로 어떤 문자열을 암호화해서 저장하거나 암호화된 데이터를 다시 원래의 문자열로 복호화 하기 위해서는 pgcrypto라는 확장 기능을 활용하면 됩니다.

먼저 PostgreSQL에서 다음 명령을 통해 확장 기능을 설치할 수 있습니다. 저 같은 경우 PostgreSQL v10을 사용하였습니다.

CREATE EXTENSION pgcrypto;

이제 어떤 문자열을 암호화하는 방법은 다음과 같습니다.

SELECT 
    encode(
        encrypt(
            convert_to('GIS 개발자, 김형준', 'utf8'),
                'encoding_key',
                'aes'
            ),
        'hex'
    );

위의 쿼리는 “GIS 개발자, 김형준” 문자열을 “encoding_key”를 암호화 키로 사용하여 AES 알고리즘으로 암호화하는 것입니다. 결과는 다음과 같습니다.

이제 다시 암호화된 데이터를 원래의 문자열로 복호화 하는 방법은 아래와 같습니다.

SELECT 
    convert_from(
        decrypt(
            decode('12773b7766896ab35aed6b0b5be174d3b4c57c4bde2fc88a982b12946b500943','hex'),
            'decoding_key',
            'aes'
        ),
        'utf8'
    );

결과는 다음과 같습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다