Criptografando no PHP com OpenSSL

Hoje eu vou mostrar para vocês um método bem simples que uso para criptografia AES-256-CBC no PHP, já utilizei inclusive para comunicação entre sistemas desenvolvidos em C# com outro em PHP, mas aí é papo para outro post, hoje vou mostrar apenas esse método.

A coisa é bem simples você cria o método abaixo:

private function encrypt_decrypt($action, $string, $secret_key = null, $secret_iv = null)
    {
        $output = false;
        $encrypt_method = "AES-256-CBC";
        $key = hash('sha256', $secret_key);
        $iv = substr(hash('sha256', $secret_iv), 0, 16);
        switch ($action) {
            case 'encrypt': {
                    $output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv);
                    $output = base64_encode($output);
                    break;
                }
            case 'decrypt': {
                    $output = openssl_decrypt(base64_decode($string), $encrypt_method, $key, 0, $iv);
                    break;
                }
        }
        return $output;
    }

Para maior comodidade eu criei esses dois métodos que usam o método de cima e a coisa fica mais simples

public function encryptIt($q, $secret_key = null, $secret_iv = null)
{
        return $this->encrypt_decrypt('encrypt', $q, $secret_key, $secret_iv);
}

public function decryptIt($q, $secret_key = null, $secret_iv = null)
{
        return $this->encrypt_decrypt('decrypt', $q, $secret_key, $secret_iv);
}

Como uso?

Assim, você instancia a classe e chama o método de encriptar e decriptar, passando como argumento as duas chaves.

$classCript = new ClassCript();
$texto = 'Olá Mundo';
$c_texto = $classCript->encryptIt($texto,'4ba0c50e-d17e-4888-adef-1408b10ed026','9599bc91-24c5-4c7b-8705-ab078528fa0d');
$d_texto = $classCript->decryptIt($c_texto,'4ba0c50e-d17e-4888-adef-1408b10ed026','9599bc91-24c5-4c7b-8705-ab078528fa0d');

echo $texto . '<br>';
echo $c_texto . '<br>';
echo $d_texto . '<br>';

Deixe um comentário