Cifrar y descifrar cadenas con php

Estuve buscando bastante una forma efectiva de cifrar / descifrar (ojo! que no se dice encriptar / desencriptar, porque son termindos “gringos”) cadenas con PHP para pasar argumentos via URL y encontré esta que me funciono a la perfección, la saque del  blog http://naveensnayak.wordpress.com/2013/03/12/simple-php-encrypt-and-decrypt/. Espero que les sirva y un saludo desde Colombia.

function encrypt_decrypt($action, $string) { ...

/**
 * simple method to encrypt or decrypt a plain text string
 * initialization vector(IV) has to be the same when encrypting and decrypting
 * PHP 5.4.9
 *
 * this is a beginners template for simple encryption decryption
 * before using this in production environments, please read about encryption
 *
 * @param string $action: can be 'encrypt' or 'decrypt'
 * @param string $string: string to encrypt or decrypt
 *
 * @return string
 */
function encrypt_decrypt($action, $string) {
    $output = false;

    $encrypt_method = "AES-256-CBC";
    $secret_key = 'This is my secret key';
    $secret_iv = 'This is my secret iv';

    // hash
    $key = hash('sha256', $secret_key);
    
    // iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning
    $iv = substr(hash('sha256', $secret_iv), 0, 16);

    if( $action == 'encrypt' ) {
        $output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv);
        $output = base64_encode($output);
    }
    else if( $action == 'decrypt' ){
        $output = openssl_decrypt(base64_decode($string), $encrypt_method, $key, 0, $iv);
    }

    return $output;
}

$plain_txt = "This is my plain text";
echo "Plain Text = $plain_txtn";

$encrypted_txt = encrypt_decrypt('encrypt', $plain_txt);
echo "Encrypted Text = $encrypted_txtn";

$decrypted_txt = encrypt_decrypt('decrypt', $encrypted_txt);
echo "Decrypted Text = $decrypted_txtn";

if( $plain_txt === $decrypted_txt ) echo "SUCCESS";
else echo "FAILED";

echo "n";
Anuncios

3 Responses to Cifrar y descifrar cadenas con php

  1. Jose says:

    Gracias estuvo genial ese codigo, sigue adelante con los aportes

  2. entiendo perfectamente tu codigo menos esto:

    $secret_key = ‘This is my secret key’;
    $secret_iv = ‘This is my secret iv’;

    • Esas son las llaves necesarias para al enviar el mensaje cifrarlo y cuando se lo reciba poder descifrarlo de forma segura es decir sólo el que tiene la llave podrá descifrar el mensaje por tanto si alguien lo intercepta en el tráfico de la red y no tienen la llave no podrá descifrar el mensaje

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: