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_temp, 0, $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.