【发布时间】:2016-07-15 03:47:38
【问题描述】:
我已经为android制作了一个完整的工作注册/登录系统,一切都在空中和服务器端数据库中,问题是现在我的密码被直接保存到数据库中(没有加密),我已经搜索了大量的网站和 SoF 帖子和线程,但没有任何实际帮助我。
我阅读了 md5 和 sha1 、河豚和 bcrypt 的相关信息,但无法理解此类加密技术的正确实现方式。
连接是使用 php 请求建立的。注册码如下:
if($_SERVER['REQUEST_METHOD']=='POST'){
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
$Firstname = $_POST['fname'];
$Lastname = $_POST['lname'];
$Date = $_POST['Date'];
require_once('db_config.php');
$check_username_email = "SELECT * FROM Users WHERE Username ='$username' AND Email = '$email'";
$check_u_e = mysqli_fetch_array(mysqli_query($db,$check_username_email));
$check_username = "SELECT * FROM Users WHERE Username ='$username'";
$check_u = mysqli_fetch_array(mysqli_query($db,$check_username));
$check_email = "SELECT * FROM Users WHERE Email ='$email'";
$check_e = mysqli_fetch_array(mysqli_query($db,$check_email));
if(isset($check_u_e)){
echo 'Username AND Email already exist, please change them Both.';
}
else if(isset($check_u)){
echo 'Username already exists, please change it.';
}
else if (isset($check_e)){
echo 'Email already exists, please change it.';
} else{
$sql = "INSERT INTO Users(Email,Username,Bio,Password,Fname,Lname,Regiser_Date) VALUES ('$email','$username',NULL,'$password','$Firstname','$Lastname','$Date')";
if(mysqli_query($db,$sql)){
echo "You have been successfully Registered";
} else{
echo "Sorry, something went wrong - Try again.";
}
}
}else{
echo 'Server error - Please try again later.';
mysqli_close($db);
}
我的登录信息在这里:
if($_SERVER['REQUEST_METHOD']=='POST'){
$username = $_POST['username'];
$password = $_POST['password'];
require_once('db_config.php');
$sql = "SELECT * FROM Users WHERE Username = '$username' AND Password = '$password'";
$result = mysqli_query($db,$sql);
$check = mysqli_fetch_array($result);
if(isset($check)){
echo 'Logged In';
}
else{
echo 'Failed to login';
}
}
一切都很好,除了加密。有人可以指导我完成这个吗?我读到它需要 2 个面,一个来自客户端(android 应用程序),一个来自 php 服务器端
【问题讨论】:
-
听起来您对cryptography terms 感到困惑。加密是双向的,加密哈希是单向的。调用 MD5 或 bcrypt 加密是错误的,并且可能是让您绊倒的部分原因。
标签: php android mysql encryption passwords