ccc

Silex: Encriptar y desencriptar

En el index:
$app["encrypt_method"] = "aes128";
$app["secret_key"] = "xxxxx"; // codificado en md5
$app["secret_iv"] = "xxxxx"; // codificado en md5
$app["key"] = hash('sha256', $app["secret_key"]);
$app["iv"] = substr(hash('sha256', $app["secret_iv"]), 0, 16);

$app['twig'] = $app->share($app->extend('twig', function($twig) {

    $twig->addFilter(new Twig_SimpleFilter('sslencrypt', function ($str) {

        $encrypt_method = "aes128";
        $secret_key = 'd2ae49e3b63ed418b9fc25105cd964d4';
        $secret_iv = 'fb68e879fab1db2a2ce30dbf6f9b3743';
        $key = hash('sha256', $secret_key);
        $iv = substr(hash('sha256', $secret_iv), 0, 16);

        $output =  openssl_encrypt($str, $encrypt_method, $key, 0, $iv);
        return base64_encode($output);

    }));
    return $twig;
}));

$app['twig'] = $app->share($app->extend('twig', function($twig) {

    $twig->addFilter(new Twig_SimpleFilter('ssldecrypt', function ($str) {

        $encrypt_method = "aes128";
        $secret_key = 'd2ae49e3b63ed418b9fc25105cd964d4';
        $secret_iv = 'fb68e879fab1db2a2ce30dbf6f9b3743';
        $key = hash('sha256', $secret_key);
        $iv = substr(hash('sha256', $secret_iv), 0, 16);

        $output =  openssl_decrypt(base64_decode($str), $encrypt_method, $key, 0, $iv);
        return $output;

    }));
    return $twig;
}));

Crear una clase para encriptar que contenga:
function encriptar(Application $app, $cad) {
   return base64_encode(openssl_encrypt($cad, $app["encrypt_method"], $app["key"], 0, $app["iv"]));
}

function desencriptar(Application $app, $cad) {
   return openssl_decrypt(base64_decode($cad), $app["encrypt_method"], $app["key"], 0, $app["iv"]);
}

Desde cualquier controlador: $CEncriptar = new diclases\CEncriptar();
$en = $CEncriptar->encriptar($app, "En un lugar de la Mancha");
echo "EN:".$en;
$de = $CEncriptar->desencriptar($app, $en);
echo "DE:".$de;

En las views:
{{loquesea|sslencrypt}}
{{loquesea|ssldecrypt}}

No hay comentarios:

Publicar un comentario