12

フィールドの暗号化/復号化に取り組んでいます。

私が選ぶのは

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

私は自分のデータを暗号化しましたが、他の文字列は以下のように復号化した後にそこにあります...

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

私は道を間違えたのでしょうか?(この種の質問はばかげている可能性があることを私は知っています...)

私がしなければならないことは、最も簡単な方法を取得することであり、暗号化されたデータのサイズは小さくなります....

前もって感謝します...

4

2 に答える 2

27

復号化関数は、文字列ではなくバイト列を返すため、16 進数で表示されます。実際の値は同じ \x31 = 1、\x32 = 2 などです。

戻り値をテキストにキャストする必要があります。

例えば:

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

Postgresql 文字列関数

于 2012-09-26T09:49:41.077 に答える