phpMyAdmin
 sql >> Base de Dados >  >> Database Tools >> phpMyAdmin

Como criptografar uma coluna específica em uma tabela MySQL?


Procure aqui a lista de possíveis funções de criptografia:

http://dev.mysql.com/doc/refman /5.1/en/encryption-functions.html

Você pode criar um gatilho para atualização e verificar o campo accessable . Algo parecido:
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;

Você também pode atualizar todos os registros existentes em sua tabela com esta consulta:
UPDATE table SET msg = IF(accessable = 0, ENCRYPT(msg, 'key'), DECRYPT(msg, 'key'));

Assim, você pode selecionar registros para seu código PHP:
SELECT msg_id, user_id, time, IF(accessable = 0, DECRYPT(msg, 'key'), msg) msg
FROM table

UPD. Também aqui estava uma pergunta semelhante:

Colunas criptografadas do MySQL