Ciao.
Dunque, le varie info di criptazione e decriptazione le puoi tranquillamente salvare in un file di configurazione, anche php, tanto il "codice" dietro non lo può vedere nessuno, a meno che abbia accesso al file system. Se provasse ad accedere al file di configurazione "grezzo" via internet, il server web (apache, per capirci) lo interpreta come php e quindi non vedi il contenuto ma il "risultato". Ovviamente essendo un file di configurazione, non avrai alcun output nel browser.
Io personalmente uso queste due funzioni
codice:
function cript_high_security($string){
$obj = get_instance();
// Encription Key, Private Key, Digest
$private_key = $obj->config->config["encryption_private_key"]; // es recaptcha priv key
$enc_key = $obj->config->config["encryption_key"]; // es "cnesnvfei[453v"
$digest = $obj->config->config["encryption_digest"]; // es AES256
// Get max digest len
$ivlen = openssl_cipher_iv_length($digest);
$iv = substr(md5($private_key), 0, $ivlen);
/* Create key */
$key = md5($enc_key);
$ciphertext = openssl_encrypt($string, $digest, $key, $options=0, $iv);
/* return encripted data */
$ciphertext = str_replace("/", "_-_-_", $ciphertext);
return $ciphertext;
}
function decript_high_security($string){
$obj = get_instance();
// Encription Key, Private Key, Digest
$private_key = $obj->config->config["encryption_private_key"]; // es recaptcha priv key
$enc_key = $obj->config->config["encryption_key"]; // es "cnesnvfei[453v"
$digest = $obj->config->config["encryption_digest"]; // es AES256
// Get max digest len
$ivlen = openssl_cipher_iv_length($digest);
$iv = substr(md5($private_key), 0, $ivlen);
/* Create key */
$key = md5($enc_key);
$string = str_replace("_-_-_", "/", $string);
$original_plaintext = openssl_decrypt($string, $digest, $key, $options=0, $iv);
return $original_plaintext;
}
E ovviamente nel file di configurazione ho, come prima riga,
Codice PHP:
if (! defined( 'BASEPATH' )) exit( 'No direct script access allowed' );
Il replace delle barre con quel "robo" "_-_-_" lo faccio perchè altrimenti mi crea problemi nel caso la parte criptata la debba usare come parte di indirizzo html (es: pippo.com/Visualizza_File/stringaCriptata. Se stringa criptata fosse non pulita, potrei avere pippo.com/Visualizza_File/87hadea/jfewfefo/rerer e diventerebbe complicato tornare indietro)
Quindi, ricapitolando, le encryption_private_key, encryption_key e encryption_digest le puoi mettere in un file di configurazione senza problemi