I'm using RIJNDAEL to encrypt/decrypt passwords and some other strings, but it doesn't work.
This is my encrypt/decrypt function:
function secreto($accion,$clave,$palabra) {
//SETEO DATA EN 0 PORSIACA
$data = 0;
//INICIALIZO EL VECTOR
$iv = md5($clave);
//SI TENGO QUE ENCRIPTAR
if($accion == 'encripta') {
$data = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $clave, $palabra, MCRYPT_MODE_CBC, $iv);
$data = base64_encode($data);
} elseif($accion == 'decripta') {
$data = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $clave, base64_decode($palabra), MCRYPT_MODE_CBC, $iv);
$data = rtrim($data, "");
}
return $data;
}
Here is the relevant part I'm using to log in a user:
session_start();
if(isset($_SESSION['usuario']) && isset($_SESSION['domadmin']) && isset($_SESSION['superadmin'])) {
$usuario = $_SESSION['usuario'];
$tipoadmin = $_SESSION['tipoadmin'];
if(isset($_GET['p'])) { $p = $_GET['p']; } else { $p = "resumen"; }
echo TPcabecera();
echo TPmenu($p);
echo TPcentral($p);
echo TPpie();
} else {
if(isset($_POST['usuario']) && isset($_POST['password'])) {
$post_usr = mysqli_real_escape_string(sqls("mail"), $_POST['usuario']);
$post_pwd = mysqli_real_escape_string(sqls("mail"), $_POST['password']);
$data = sql("mail", "SELECT email,superadmin,domadmin,syspass FROM users WHERE email = '".$post_usr."'");
if(mysqli_num_rows($data) == 0) {
echo TPlogin();
} else {
$row = mysqli_fetch_assoc($data);
$pass = secreto('decripta',$passsalt,$row['syspass']);
if($post_pwd == $pass) {
$usuario = $row['email'];
if($row['superadmin'] == '1') { $tipoadmin = 'superadmin'; } elseif($_SESSION['domadmin'] != '0') { $tipoadmin = $_SESSION['domadmin']; } else { $tipoadmin = '0'; }
if(isset($_GET['p'])) { $p = $_GET['p']; } else { $p = "resumen"; }
echo TPcabecera();
echo TPmenu($p);
echo TPcentral($p);
echo TPpie();
} else {
echo TPlogin();
}
}
} else {
echo TPlogin();
}
}
If I echo $pass
and $post_pwd
, they are exactly the same, yet the if($post_pwd == $pass)
doesn't validate... am I using encryption in the wrong way?