Skip to content

Instantly share code, notes, and snippets.

@joashp
Created September 4, 2015 15:59
Show Gist options
  • Select an option

  • Save joashp/a1ae9cb30fa533f4ad94 to your computer and use it in GitHub Desktop.

Select an option

Save joashp/a1ae9cb30fa533f4ad94 to your computer and use it in GitHub Desktop.

Revisions

  1. joashp created this gist Sep 4, 2015.
    48 changes: 48 additions & 0 deletions openssl_encrypt_decrypt.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,48 @@
    <?php
    /**
    * simple method to encrypt or decrypt a plain text string
    * initialization vector(IV) has to be the same when encrypting and decrypting
    *
    * @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_txt. "\n";

    $encrypted_txt = encrypt_decrypt('encrypt', $plain_txt);
    echo "Encrypted Text = " .$encrypted_txt. "\n";

    $decrypted_txt = encrypt_decrypt('decrypt', $encrypted_txt);
    echo "Decrypted Text =" .$decrypted_txt. "\n";

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

    echo "\n";

    ?>