Hola, deseo aplicarle las funciones EncryptByPassphrase y DecryptByPassphrase a determinados campos de algunas tablas de mi BD. Pongo un ejemplo concreto:
La tabla productor almacena el codificador de los mismos, y el usuario desde la aplicación siempre realiza las búsquedas del productor por su código, en la misma quiero encriptar las columnas codigo y nombre.
(una estructura simple de la tabla productor)
Código SQL:
Ver original
tabla productor id_productor autoincrementable codigo VARCHAR(8) nombre VARCHAR(100) codigo_sucursar_bancaria VARCHAR(5)
Las funciones Encrypt… y Decrypt… tienen un parámetro authenticator que deseo emplear, para este ejemplo en concreto se pudiera pensar en usar el id del propio productor, pero me lleva a pensar que debo primeramente hacer un insert en limpio con los datos y por consiguiente un update para completar la operación del Encrypt…, la idea es tener el id del nuevo registro para usarlo como authenticator.
Esa es la idea que tengo, en cuanto a la operación de inserción. Quisiera su sugerencia.
Ahora, el otro tema relacionado, es en cuanto a las búsquedas que se realizan desde los clientes a esta tabla en base al código del productor.
Código SQL:
Ver original
SELECT nombre FROM dbo.productor p INNER JOIN zafra z ON p.zafra_id = z.id_zafra WHERE (z.id_zafra = @zId) AND (CONVERT(VARCHAR(8), DecryptByPassphrase(‘m1 palabra s3cre3tA’, p.codigo, 1, CONVERT(varbinary, p.id_productor)) = @codigo)
Y por supuesto, cualquier consulta que realice y que necesite extraer el código y nombre de los productores (ejemplo para los reportes), debo aplicarle Decrypt... en base a su id_productor.
Realmente no se cuan eficiente sea esto que estoy planteando, pero si me solicitan debo proteger estas tablas, al menos para que no se sepa de quien son los registros asociados al codificador.