Salve a tutti,

Visto in questi giorni si è parlato parecchio sul tema di come codificare una password:
con base64_encode(che però e facile da decodificare con la funzione opposta), con md5(che però non consente il recupero) ecc.
,
mi sono preso la briga di elaborare un codice che sfruttando alcune funzioni php elabora un algoritmo di criptazione e recupero della password.
Ovviamente io cerco di dare un'idea, poi ognuno può cambiare a proprio piacimento l'algoritmo, affidandosi alla propria creatività.

N.B. Questo non è un sistema di log-in, ma una procedura che permette il recupero della password da parte dell'amministratore del sito.

1. Iniziamo creando la tabella che utilizzeremo per l'inserimento ed il recupero della nostra password:

- o salviamo le istruzioni in una pagina php e la eseguiamo dal browser

Codice PHP:
<?php
require('connessionedb.php'); // o le vostre istruzioni per la connesione al DB
$query "CREATE TABLE user (
           user_id INT(11) NOT NULL AUTO_INCREMENT,
           user_name VARCHAR (50) NOT NULL,
           user_pass VARCHAR (100) NOT NULL,
           PRIMARY KEY (user_id))"
;
$users mysql_query($query)  or die(mysql_error());
?>
- oppure usiamo il nostro programma di amministrazione di MySql (ad esempio phpMyAdmin) per creare la tabella user con i campi sopraindicati


2. Creiamo le due pagine html che ci permettono di inserire la password (insert.htm) e di richiederla (getpass.htm):

insert.htm
Codice PHP:
<html>
<
head>
<
title>codifica</title>
</
head>
<
body>



 <
form action="codifica.php" method="post">
  
Inserisci nome

  
<input name="name" type="text">


  
Inserisci password

  
<input name="pass" type="text" maxlength="20">br>

  <
input type="submit" name="Submit" value="Avanti">
 </
form>
</
p>
</
body>
</
html
getpass.htm
Codice PHP:
<html>
<
head>
<
title>decodifica</title>
</
head>
<
body>



 <
form action="decodifica.php" method="post">
  
Inserisci id

  
<input name="id" type="text">


  <
input type="submit" name="Submit" value="Avanti">
 </
form>
</
p>
</
body>
</
html
3. Creiamo la pagina (codifica.php) di codifica della password e del suo inserimento nel DB:

codifica.php
Codice PHP:
<?php
  
require('connessionedb.php'); // o le vostre istruzioni per la connesione al DB
  
  
$name $_POST['name'];
  
$pass_get =$_POST['pass'];
  
$pass_temp base64_encode($pass_get);
  
  
$insert "INSERT INTO user
                 (user_name)    
                 VALUES
                 ('
$name')";
  
$result mysql_query($insert) or die (mysql_error());
  
  
$id mysql_insert_id();
  
$temp gettimeofday(); 
  
$msec = (int) $temp["usec"]; 
  
$last md5(time() . $msec);

  
$password mysql_real_escape_string($last $pass_temp $id);

  
$insert_pass "UPDATE user SET user_pass = '$password' WHERE user_id = '$id' ";
  
$result mysql_query($insert_pass) or die (mysql_error());

  echo 
"I dati sono stati inseriti!";
?>

4. Infine creiamo la pagina (decodifica.php) che ci permette il recupero della password:

decodifica.php
Codice PHP:
<?php
  
require('connessionedb.php'); // o le vostre istruzioni per la connesione al DB
  
  
$id $_POST['id'];
  
  
$log "SELECT SUBSTRING(user_pass, 33) FROM user WHERE user_id = '$id' ";
  
$result mysql_query($log) or die (mysql_error());
  
  
$row mysql_fetch_row($result);
  if (
mysql_num_rows($result) != 0)
  {
   
$pass_temp $row[0];
  }
  
$lung_id strlen($id);
  
$lung_temp strlen($pass_temp);
  
$lung_pass $lung_temp $lung_id;
  
  
$pass_code substr($pass_temp0$lung_pass);
  
$pass_decode base64_decode($pass_code);
  echo 
"La password decodificata è: " $pass_decode;
?>
Ed il gioco è fatto!!!

Per pareri o chirimenti, non esitate!

P.S. Ovviamente se i moderatori non dovessero ritenerlo al altezza del forum, prego anche loro di spiegarmi le mie mancanze.