Descifrar y cifrar utilizando métodos CallBack en cakephp
Quiero usar los métodos Callbacks para cifrar un valor antes de que se almacene en mi base de datos y descifrarlo antes de mostrarlo nuevamente en la aplicación.
Usé uno de los ejemplos proporcionados en eldocumentación.
En micore.php
Pongo lo siguiente:
Configure::write('Security.cipherCriptKey','su0HKssPmdbwgK6LdQLqzp0YmyaTI7zO');
En mi modelo, utilicé dos métodos:
beforeSave()
public function beforeSave($options = array()) {
$value=$this->data['Internship']['encryptedindb'];
$encrypted = Security::encrypt($value, Configure::read('Security.cipherCriptKey'));
$this->data['Internship']['encryptedindb'] = $encrypted;
return true;
}
afterFind()
public function afterFind($results, $primary = false) {
foreach ($results as $key => $val) {
if(isset($val['Internship']['encryptedindb'])){
$results['Internship']['encryptedindb'] = Security::decrypt($val['Internship']['encryptedindb'], Configure::read('Security.cipherCriptKey'));
}
return $results;
}
}
losbeforeSave()
parece estar funcionando bien, ya que puedo ver en mi base de datos el valor cifrado. Sin embargo, en mi opinión, y cuando me gustaría ver el contenido del campodescifrado, lo muestra como un campo vacío. Como si elafterFind()
El método no puede descifrarlo de nuevo (devuelve siempre falso).
A continuación se muestra una captura de pantalla de la vista de mi aplicación:
Y base de datos con los valores cifrados: