I found this function on the web to encrypt and decrypt passwords and it seems to work pretty well but I don't really understand what is going on with it. Would someone mind explaining it to me please?


PHP Code:
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), 016);

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

    return 
$output;