Criptare / Decriptare dati

« Older   Newer »
  Share  
sevenjeak
view post Posted on 11/10/2010, 08:44     +1   -1




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.
 
Top
max_400
view post Posted on 11/10/2010, 12:27     +1   -1




Correzioni
Nel primo script mancano all'inizio e alla fine "<?" "?>"
nel terzo manca "<? iniziale


il secondo script mancano i ";" finali
CITAZIONE
$string = file_get_contents("c.txt")

CITAZIONE
$string = $str_crypt($string, $key)

ed in ogni caso presentano errori

effettua le correzioni necessarie fai un esempio di utilizzo
in una cartella la comprimi e la metti in allegato.

Grazie per la collaborazione.

Er Founder
by Max :capt:
 
Top
sevenjeak
view post Posted on 11/10/2010, 15:48     +1   -1




Ecco qui un'archivio zip dove faccio un'esempio di login con password e username criptati:

www.mediafire.com/?yarrhnk8a6zh5rc

Scusate, ma non ho ben capito che su forumfree, siccome è da molto che non lo uso, se è possibile uppare i file.

Cmq, per vedere se lo script funziona:

· Estraete l'archivio in una cartella che metterete sul vostro spazio web o nel vostro webserver in locale.
· Aprire dal vostro browser la cartella appena estratta
· Vi si aprila una pagina dove vi chiederà di creare un'utente, ho impostato lo script, proprio per farvi un'esempio, per creare un'unico utente nel file di testo.
· Se tutto va bene, ovvero se i campi username e password non sono vuoti, vi viene scritto che il vostro utente e stato creato insieme ad un link collegato ad una pagina di login
· Cliccate su quel link, effettuate il login, e premete sul tasto Log in.
· A questo punto siete connessi al sito, cliccate sul link sotto, per visualizzare che il vostro utente rimane connesso al sito aprendo un'altra pagina
· Cliccate su disconetti per disconnettervi dal sito.

Spero sia stato tutto chiaro, per qualche cosa potrete chiedere.

Ecco, ora aprite il file c.txt e leggete, o meglio cercate di capire cosa c'è scritto, è la vostra username e password, sfiderei chiunque a leggere il vostro username e password :smorfia:
 
Top
max_400
view post Posted on 27/6/2012, 15:27     +1   -1




481
 
Top
max_400
view post Posted on 6/7/2012, 10:40     +1   -1




485
 
Top
max_400
view post Posted on 30/6/2013, 12:23     +1   -1




up
 
Top
5 replies since 11/10/2010, 08:44   1359 views
  Share