Question:
Date: 21-11-2015 14:20:43
(In Spanish)
// esta es la funcion que encrypta los password
y la forma de comprobarlo seria asi:
Disculpen si no puse <? ?> en los ejemplos
y la pregunta es hay alguna forma de mejorarla? // ya lo supe UwUr
porfa ponga ejemplos que si leyeron bien entendieron que dije que apenas entendi esta vez como encryptar la contraseña.
segun php aun existen formas mas seguras: ya les entendi (2 horas despues de hacer la pregunta)
CRYPT_SHA256
CRYPT_SHA512 :
Fuente : PHP crypt Manual
pero no supe como usarlas xD. no me salian si ponia el crypt sha256 o el crypt sha512 u.u me salian signos raros caracteres especiales una forma rara que no lo habia visto igual funcionaba pero si no estaba bien codificado no se veian los signos me salian signos de pregunta :) mejor creo xD por que mientras que el php lo entienda todo bien n.n era asi en vez de poner esta linea:
si ponia eso me salian los signos raros que les digo
y ya solo poniendo en vez en if antes de poner crypt ponia hash ejemplo:
saldria algo como esto:
îñ¤Ó÷”ýø(üAdžM(šÞ.Žy'ê´¹HÜ ÅȘ(:°jÅÆÔpTùVÜö"Y“p454ÍùëaµŠ
igualmente al comprobarlos si pones holas en el campo de texto seria correcto y si no pues logico que no xD daria error, no se si esto sea mejor o no que la otra forma o ustedes que piensan?
ya lo resolvi pero aun quisiera preguntar si hay otra forma mas segura de encryptar la contraseñas?
y si se saben una porfa pongan el ejemplo, ya luego esto les servira a otras personas :) y a mi xD. Votes: 3 - Answers: 5 - Views: 28 Share on: Google Facebook Twitter LinkedIn Link
Alguna forma de mejorar mi encriptación de contraseñas? (Sugerencias)[Resolved]
Despues de tanto tratar de entender, le entendi a alguien de como guardar en la base de datos, la contraseña de forma mas segura que sha-1, este usa CRYPT_BLOWFISH:// esta es la funcion que encrypta los password
function cryptPass($input, $rounds = 9) { $salt = null; $saltChars = array_merge(range('A','Z'), range('a','z'), range('0','9')); for($i = 0; $i < 22; $i++) { $salt .= $saltChars[array_rand($saltChars)]; } return crypt($input, sprintf('$2y$%02d$', $rounds) . $salt); }
y la forma de comprobarlo seria asi:
$err = null; if(isset($_POST["password"])) { $inputPass = $_POST["password"]; // value recibido del campo del formulario // $pass = "hola"; $hashedPass = '$2y$06$vY6K7UHey4l1Wuyze4AX8epOS4etZ.1h4f85KIIW6637rZ3Ggbqiy'; // es hola, y debe logicamente traerse desde la base de datos aqui no lo hice, solo puse lo que deberia ir el campo password en la base datos. if(crypt($inputPass, $hashedPass) == $hashedPass) { $err = "<br /> password match"; } else { $err = "<br /> password not match"; } }
Disculpen si no puse <? ?> en los ejemplos
y la pregunta es hay alguna forma de mejorarla? // ya lo supe UwUr
porfa ponga ejemplos que si leyeron bien entendieron que dije que apenas entendi esta vez como encryptar la contraseña.
segun php aun existen formas mas seguras: ya les entendi (2 horas despues de hacer la pregunta)
CRYPT_SHA256
CRYPT_SHA512 :
<?php //session_start(); // reuqire_once(""); // function que trasforma function cryptPass($input, $rounds = 22) { $salt = null; $saltChars = array_merge(range('A','Z'), range('a','z'), range('0','9')); for($i = 0; $i < $rounds; $i++) { $salt .= $saltChars[array_rand($saltChars)]; } return crypt($input, '$6$' . $salt); } $err = null; if(isset($_POST["password"])) { $inputPass = $_POST["password"]; // value recibido del campo del formulario $pass = "holas"; $hashedPass = cryptPass($pass); echo $hashedPass; if(crypt($inputPass, $hashedPass) == $hashedPass) { $err = "<br /> password match"; } else { $err = "<br /> password not match"; } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="ISO-8859-1"> <title>Document</title> </head> <body> <form action="<?=$_SERVER["PHP_SELF"];?>" method="post"> <input type="text" name="password" /> <input type="submit" value="Send" /> </form> <?php echo $err?> </body> </html>
Fuente : PHP crypt Manual
pero no supe como usarlas xD. no me salian si ponia el crypt sha256 o el crypt sha512 u.u me salian signos raros caracteres especiales una forma rara que no lo habia visto igual funcionaba pero si no estaba bien codificado no se veian los signos me salian signos de pregunta :) mejor creo xD por que mientras que el php lo entienda todo bien n.n era asi en vez de poner esta linea:
si ponia eso me salian los signos raros que les digo
y ya solo poniendo en vez en if antes de poner crypt ponia hash ejemplo:
function cryptPass($input, $rounds = 9) { $salt = null; $saltChars = array_merge(range('A','Z'), range('a','z'), range('0','9')); for($i = 0; $i < 22; $i++) { $salt .= $saltChars[array_rand($saltChars)]; } return hash("sha512", $input, sprintf('$2y$%02d$', $rounds) . $salt); } $err = null; if(isset($_POST["password"])) { $inputPass = $_POST["password"]; // value recibido del campo del formulario $pass = "holas"; $hashedPass = cryptPass($pass); echo $hashedPass; if(hash("sha512", $inputPass, $hashedPass) == $hashedPass) { $err = "<br /> password match"; } else { $err = "<br /> password not match"; } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="ISO-8859-1"> <title>Document</title> </head> <body> <form action="<?=$_SERVER["PHP_SELF"];?>" method="post"> <input type="text" name="password" /> <input type="submit" value="Send" /> </form> <?php echo $err?> </body> </html>
saldria algo como esto:
îñ¤Ó÷”ýø(üAdžM(šÞ.Žy'ê´¹HÜ ÅȘ(:°jÅÆÔpTùVÜö"Y“p454ÍùëaµŠ
igualmente al comprobarlos si pones holas en el campo de texto seria correcto y si no pues logico que no xD daria error, no se si esto sea mejor o no que la otra forma o ustedes que piensan?
ya lo resolvi pero aun quisiera preguntar si hay otra forma mas segura de encryptar la contraseñas?
y si se saben una porfa pongan el ejemplo, ya luego esto les servira a otras personas :) y a mi xD. Votes: 3 - Answers: 5 - Views: 28 Share on: Google Facebook Twitter LinkedIn Link
Answers:
-
Date: 22-11-2015 06:07:46 Hola
Yo he hecho un tema parecido aqui
te dejo el link
Saludos Votes: 3 - Link answer -
Date: 22-11-2015 07:34:32 Hola tal como dice Walter este tema ya lo habías hecho si te daba pereza de pronto buscar en la lista de preguntas puedes ir al Menu > Perfil > Mis Preguntas o Respuestas y ahí puedes ver todo lo que has hecho en la comunidad. Votes: 0 - Link answer
-
Date: 22-11-2015 21:40:49 Eso es cierto walter ^^ yo solo esperaba que otros usuarios pusieran sus sugeriencias :) ese aporte tuyo yo ya lo habia visto en ese entonces no le habia entendido ^^
Ademas puse esto como un aporte para aquellos que aun no entiendan tambien n.n por eso deje opciones y documentacion.
Gracias ElCapa por comentar yo ya sabia eso pero bueno :)
Saludos. Votes: 2 - Link answer -
Date: 23-11-2015 03:46:24 Hola comunidad le comparto estos codigos para encriptar y desencriptar
function encrypt($string) { $result = ''; $key = '2016'; for ($i = 0; $i < strlen($string); $i++) { $char = substr($string, $i, 1); $keychar = substr($key, ($i % strlen($key)) - 1, 1); $char = chr(ord($char) + ord($keychar)); $result.=$char; } return base64_encode($result); } function decrypt($string) { $result = ''; $string = base64_decode($string); $key = '2016'; for ($i = 0; $i < strlen($string); $i++) { $char = substr($string, $i, 1); $keychar = substr($key, ($i % strlen($key)) - 1, 1); $char = chr(ord($char) - ord($keychar)); $result.=$char; } return $result; } /* Key para desencriptar es 2016 es por ello que cuando llamo a la funcion decrypt como segundo parametro paso el key q es "2016" */ /* Encriptar*/ echo "<b>Encriptar</b><br/>"; echo encrypt('mi_password')."<br/><br/><br/>"; /* Desencriptar*/ echo "<b>Desencriptar</b><br/>"; echo decrypt("o5uPoZelo6ilpJQ=",'2016')."<br/>";
Votes: 5 - Link answer -
To actively participate in the community first must authenticate, enter the system.Sign In