Salve,
Scrivo oggi questa guida che permette di criptare, e decriptare i dati per il loro recupero quando vi occorre.
Per iniziare scriviamo due funzioni php, la funzione
str_crypt(), per criptare una stringa, la funzione
str_decrypt(), per decriptare la stringa precedentemente criptata, io queste due funzioni ad esempio li ho dichiarate in un file chiamato
security_function.php:
CODICE
function str_crypt($data, $key)
{
if(strlen($key)<32) $key = md5($key);
$ld = strlen($data);
$lk = strlen($key);
for($i=0, $crdata=""; $i<$ld; $i++){
$crdata .= sprintf("%02X",(ord($data[$i]))^(ord($key[$i%$lk])));
}
return $crdata;
}
function str_decrypt($cdata, $key)
{
if(strlen($key)<32) $key = md5($key);
$ld = strlen($cdata);
$lk = strlen($key);
for($i=0, $data=""; $i<$ld; $i+=2){
$data .= chr((hexdec(substr($cdata, $i, 2)))^(ord($key[($i>>1)%$lk])));
}
return $data;
}
La funzione
str_crypt() cripta la stringa, trasformandola in una stringa alfanumerica ( composta da lettere è numeri ), in questo caso tutta in maiuscolo, di 32bit, se non ricordo male, in base ad ogni relativo carattere della stringa messo in relazione con ogni carattere della chiave di criptazione.
Come di certo avete capito la funzione
str_crypt() accetta due parametri, la stringa da criptare e la chiave per decriptarla in un secondo momento, in effetti la funzione
str_decrypt() Compie l'operazione inversa, cioè, se con una chiave abbiamo ottenuto una stringa criptata, sempre a 32bit, con la stessa chiave recuperiamo la stringa com'era al principio.
Ora, facciamo che la stringa da criptare sia in un file di testo chiamato
c.txt contenente la stringa
Ciao a tutti.
A questo punto vi basta includere il file
security_function.php in ogni file, dove vogliamo desiderare criptare una stringa, che può essere ad esempio la nostra password per il login:
CODICE
<?php
include("security_function.php");
// Inizializziamo la stringa da criptare ( non ancora criptata ) e la chiave ( "cricript" )
$string = file_get_contents("c.txt") /* la funzione file_get_contents() prende direttamente il contenuto del file di testo, senza aver bisogno di aprirlo con <b>fopen()</b> e leggerlo con <b>fread()</b> */
$key = "criptcript";
// Sovrascriviamo la stringa nel file di testo con la stessa stringa criptata
$string = $str_crypt($string, $key) // la stringa originare non ci serve più, quindi reinizializziamo la variabile $string con il vecchio valore della variabile $string criptato
// Sovrascriviamo la stringa criptata nel file di testo ( bhe.. questo credo che lo sapete fare, basta vedere il tutorial fatto dal founder, in ogni caso ve lo scrivo )
$f = $fopen("c.txt", "w");
fwrite($f, $stringa);
fclose($f); // E al termine, ovviamente si chiude il file, per liberare spazio nella memoria
?>
Ora per decriptare ( sempre con la stessa chiave ) inseriamo questo codice:
CODICE
include("security_function.php");
/* Inizializziamo la stringa da criptare ( non ancora criptata ) e la chiave ( "cricript" ), ovviamente la chiave deve essere la stessa di prima, senno vi viene stampata una stringa con caratteri casuali. */
$string = file_get_contents("c.txt");
$key = "criptcript";
// Sovrascriviamo la stringa criptata con la stringa decriptata.
$string = $str_decrypt($string, $key);
/*
Ora potrete utilizzare la stringa decriptata, ad esempio per completare il login utente, nel caso la password dell'utente era criptata, ovviamente non ha senso sovrascrivere un'altra volta il file con la stringa decriptata... abbiamo fatto cosi tanto per criptarla, rendendola sconosciuta ad altri, perché stampare la stringa decriptata dentro al file di testo? xD... Tra l'altro facendo cosi, la prossima volta non è più possibile utilizzarlo visto che la funzione di criptazione viene applicata su una stringa non criptata e quindi non si sa che stringa potrà produrre, meglio non incasinare le cose xD.
*/
?>
Spero che sia tutto chiaro.