sql >> Base de Datos >  >> Database Tools >> phpMyAdmin

¿Cómo cifrar una columna específica en una tabla MySQL?

Busque aquí la lista de posibles funciones de encriptación:

http://dev.mysql.com/doc/refman /5.1/es/funciones-de-cifrado.html

Puede crear un activador para la actualización y verificar el campo accessable . Algo así:

CREATE TRIGGER crypt_trg BEFORE UPDATE ON table FOR EACH ROW
BEGIN
  IF new.accessable = 0 THEN
    SET new.msg := ENCRYPT(new.msg, 'key');
  ELSE
    SET new.msg := DECRYPT(new.msg, 'key');
  END IF;
END;

También puede actualizar todos los registros existentes en su tabla con esta consulta:

UPDATE table SET msg = IF(accessable = 0, ENCRYPT(msg, 'key'), DECRYPT(msg, 'key'));

Entonces puede seleccionar registros para su código PHP:

SELECT msg_id, user_id, time, IF(accessable = 0, DECRYPT(msg, 'key'), msg) msg
FROM table

UPD. También aquí había una pregunta similar:

Columnas cifradas de MySQL