Acentos y eñes en datos encriptados

From: Adrian Misael Peña Montero <ampena(at)uci(dot)cu>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Acentos y eñes en datos encriptados
Date: 2011-08-03 04:34:53
Message-ID: 1032083778.4699001312346093818.JavaMail.root@ucimail1.uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola

Estoy administrando una base de datos que requiere que algunos datos se almacenen encriptados. Todo funciona correctamente excepto cuando debo encriptar alguna cadena que contiene acentos o eñes. A continuación les muestro la configuración de mi sistema y un ejemplo de lo que está ocurriendo.

Saludos

[root(at)crypto ~]# locale
LANG=es_ES.UTF-8
LC_CTYPE="es_ES.UTF-8"
LC_NUMERIC="es_ES.UTF-8"
LC_TIME="es_ES.UTF-8"
LC_COLLATE="es_ES.UTF-8"
LC_MONETARY="es_ES.UTF-8"
LC_MESSAGES="es_ES.UTF-8"
LC_PAPER="es_ES.UTF-8"
LC_NAME="es_ES.UTF-8"
LC_ADDRESS="es_ES.UTF-8"
LC_TELEPHONE="es_ES.UTF-8"
LC_MEASUREMENT="es_ES.UTF-8"
LC_IDENTIFICATION="es_ES.UTF-8"
LC_ALL=

[root(at)crypto ~]# yum install postgresql-server postgresql-contrib
Setting up Install Process...

[root(at)crypto ~]# su -l postgres -c "/usr/bin/initdb --pgdata='/var/lib/pgsql/data' --auth='ident' --locale='es_ES.ISO-8859-1'"
...
El cluster será inicializado con configuración local es_ES.ISO-8859-1.
La codificación por omisión ha sido por lo tanto definida a LATIN1.
La configuración de búsqueda en texto ha sido definida a «spanish».
...

[root(at)crypto ~]# service postgresql start
Iniciando servicios postgresql: [ OK ]

[root(at)crypto ~]# su - postgres -c "createdb -E LATIN1 db_prueba"

[root(at)crypto ~]# su - postgres -c "psql db_prueba"
psql (8.4.8)
Digite «help» para obtener ayuda.

db_prueba=# \l
Listado de base de datos
Nombre | Dueño | Codificación | Collation | Ctype | Privilegios
-----------+----------+---------------+------------------+------------------+-----------------------
db_prueba | postgres | LATIN1 | es_ES.ISO-8859-1 | es_ES.ISO-8859-1 |
postgres | postgres | LATIN1 | es_ES.ISO-8859-1 | es_ES.ISO-8859-1 |
template0 | postgres | LATIN1 | es_ES.ISO-8859-1 | es_ES.ISO-8859-1 | =c/postgres
: postgres=CTc/postgres
template1 | postgres | LATIN1 | es_ES.ISO-8859-1 | es_ES.ISO-8859-1 | =c/postgres
: postgres=CTc/postgres
(4 filas)

db_prueba=# SHOW server_encoding ;
server_encoding
-----------------
LATIN1
(1 fila)

db_prueba=# SHOW client_encoding ;
client_encoding
-----------------
LATIN1
(1 fila)

db_prueba=# CREATE TABLE tb_prueba (id serial, cadena text);
NOTICE: CREATE TABLE crear¦ una secuencia impl¦cita ¦tb_prueba_id_seq¦ para la columna serial ¦tb_prueba.id¦
CREATE TABLE

db_prueba=# INSERT INTO tb_prueba (cadena) VALUES ('Adrián');
INSERT 0 1

db_prueba=# SELECT * FROM tb_prueba;
id | cadena
----+---------
1 | Adrián
(1 fila)

db_prueba=# \i /usr/share/pgsql/contrib/pgcrypto.sql
...

db_prueba=# CREATE TABLE tb_prueba_crypto (id serial, crypto bytea);
NOTICE: CREATE TABLE crear¦ una secuencia impl¦cita ¦tb_prueba_crypto_id_seq¦ para la columna serial ¦tb_prueba_crypto.id¦
CREATE TABLE

db_prueba=# INSERT INTO tb_prueba_crypto (crypto) VALUES (encrypt('Adrian'::bytea,'password'::bytea,'bf-ecb/pad:pkcs'));
INSERT 0 1

db_prueba=# INSERT INTO tb_prueba_crypto (crypto) VALUES (encrypt('Adrián'::bytea,'password'::bytea,'bf-ecb/pad:pkcs'));
INSERT 0 1

db_prueba=# SELECT id, decrypt(crypto,'password'::bytea,'bf-ecb/pad:pkcs') FROM tb_prueba_crypto;
id | decrypt
----+---------------
1 | Adrian
2 | Adri\303\241n
(2 filas)

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gilberto Castillo Martínez 2011-08-03 12:10:36 Re: Fw: listado complejo...o engorroso
Previous Message suso 2011-08-03 02:34:33 Fw: listado complejo...o engorroso