Uso de AES

Hola, necesito de su ayuda, alguien sabe como puedo usar AES con la clase dao de YII?

Me explico en la base de datos de mi aplicacion necesito que algunos campos vallan encriptados y al recuperarlos poder desencriptarlos, es por esta razon que necesito usar AES, la sintaxis sql para hacerlo es:

insert into tabla(campos)values(aes_encrypt(‘valor_campo’,‘llave_para_encriptar’))

intente haciendo lo siguiente:




$sql = "insert into tabla(campos)values(aes_encrypt(:valor,:key)) ";

$comando = Yii::app() -> db -> createCommand($sql);

$comando -> bindParam(":valor", $this -> valor, PDO::PARAM_STR);  

$comando -> bindParam(":key", $this -> key, PDO::PARAM_STR);  

$comando -> execute(); 



y tambien haciendo:




$sql = "insert into tabla(campos)values(aes_encrypt(:valor,'".$key."'))";

$comando = Yii::app() -> db -> createCommand($sql);

$comando -> bindParam(":valor", $this -> valor, PDO::PARAM_STR);  

$comando -> execute(); 



pero me manda el siguiente error (ambas veces):

CDbException

CDbCommand falló al ejecutar la sentencia SQL: SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn’t match value count at row 1 …\protected\models\AplicacionDtecnicos.php(319): CDbCommand->execute()

Como lo puedo hacer? alguna idea? … gracias!

Por el tipo de error, creo que no tiene nada que ver con el hecho que estés usando aes, si no más bien con la cantidad de valores que estás enviando en el query para agregar el registro. Para poder ayudarte más tendrías que postear la estructura de la tabla.

Tenías razon, al parecer accidentalmete borre un campo de la lista, la primer forma para encriptar AES funciona, la segunda ya no la probe:




$sql = "insert into tabla(campos)values(aes_encrypt(:valor,:key)) ";

$comando = Yii::app() -> db -> createCommand($sql);

$comando -> bindParam(":valor", $this -> valor, PDO::PARAM_STR);  

$comando -> bindParam(":key", $this -> key, PDO::PARAM_STR);  

$comando -> execute();



Muchas gracias!