2012-09-26 2 views
2

나는 필드 암호화/암호 해독 작업을하고 있습니다. 나는 내 데이터는하지만 암호화있어postgresql encrypt/decrypt

select encrypt('123456789','1234','aes'); 
       encrypt    
------------------------------------ 
\x34591627f9c8eae417fc7cbbf458592c 
(1 row) 

입니다 무엇을 선택

, 다른 문자열

postgres=# select decrypt('\x34591627f9c8eae417fc7cbbf458592c','1234','aes'); 
      decrypt    
---------------------------------- 
\x313233343536373839303132333435 
(1 row) 

내가 잘못된 길을 만들었습니다 ... 후 아래와 같이 해독이있다? 사전에

내가 그냥 가장 간단한 방법 및 암호화 된 데이터를지고해야 할 것은 작은 크기를 가지고 ....

감사합니다 (I는 ... 물어 이런 종류의 바보가 될 수 알) ...

+0

은 그들을 암호화 그들과 편도를 해시 소금 없습니다. 일반적으로 암호의 평문을 복구 할 수 있어야하며 해시가 사용자에게 제공된 암호와 일치하는지 확인해야합니다. –

답변

12

decrypt 함수는 문자열이 아닌 바이트 문자열을 반환하므로 16 진 표기법으로 표시됩니다. 실제 값은 같은 \ x31 = 1, \ x32 = 2 등입니다.

반환 값을 텍스트로 다시 캐스팅해야합니다.

예 :이 암호를 경우

select convert_from(decrypt('\x34591627f9c8eae417fc7cbbf458592c','1234','aes'),'SQL_ASCII'); 
    convert_from 
----------------- 
123456789
(1 row) 

Postgresql string functions

+0

정말 고맙습니다 ... – KIM