Cifrar un campo de fecha y hora en el servidor mysql

Tengo 2 procedimientos almacenados Encode,Decode y quiero usar este sp para convertir mi datetime valores de columna (digamos Dob) a una fecha cifrada.El problema es que el formato cifrado no está en fecha y hora (varbinary) y, por lo tanto, no se puede insertar en ese campoCambiar el tipo de datos o agregar una nueva columna no me favorece ya que mi base de datos es enorme con muchas tablas y sps. Los pasos que uso actualmente son:

declare @datetime
set @datetime='01/02/2008 12:45 PM'
declare @secretDate varchar(400)
declare @date varchar(200)
set @date=(select Convert(varchar(200),@datetime,120)
EXEC @secretDate=dbo.Encode @date
set @date=(select Convert(varchar(200),@secretdate,120))
select Convert(varchar(200),convert(varbinary(MAX),@date)) as EncryptedDate

¡Se agradece cualquier sugerencia!

preguntado el 12 de junio de 12 a las 17:06

2 Respuestas

Tendría que hacer este cambio de la definición de la columna en varios pasos.

1) Agregue un nuevo conjunto de columnas de fecha cifrada al valor codificado.

2) Suelte la columna de fecha existente de la tabla.

3) Cambie el nombre de la fecha cifrada al nombre de la columna de fecha existente.

Es posible que pueda realizar los pasos 2 + 3 en un solo comando, pero no estoy seguro de la sintaxis.

¡Se agradece cualquier sugerencia!

Todo esto suena como una mala idea. Si los datos están encriptados pero la función 'Decodificar' es un procedimiento almacenado en la base de datos, entonces los datos no están efectivamente encriptados. Hacer esto también evita que funcionen todas las comparaciones de datos, lo cual es algo malo.

¿Por qué no simplemente codificar los datos cuando los lee de la base de datos si no desea presentarlos a los usuarios?

Respondido 16 Jul 12, 08:07

Los tiempos, y particularmente las fechas, tienen una estructura no lineal muy inusual. Incluso almacenar fechas en estructuras destinadas a fechas es difícil. Si necesita almacenar estos datos encriptados, no intente almacenarlos en un campo de fecha/fechahora.

Respondido 16 Jul 12, 09:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.