这比普通MD5更安全吗?我刚刚开始研究密码安全性.我是PHP的新手.
$salt = 'csdnfgksdgojnmfnb';
$password = md5($salt.$_POST['password']);
$result = mysql_query("SELECT id FROM users
WHERE username = '".mysql_real_escape_string($_POST['username'])."'
AND password = '$password'");
if (mysql_num_rows($result) < 1) {
/* Access denied */
echo "The username or password you entered is incorrect.";
}
else {
$_SESSION['id'] = mysql_result($result, 0, 'id');
#header("Location: ./");
echo "Hello $_SESSION[id]!";
}
Run Code Online (Sandbox Code Playgroud) 我已经读过,在对密码进行散列时,许多程序员建议使用BCrypt算法.
我正在使用C#进行编程,并且想知道是否有人知道BCrypt的良好实现?我找到了这个页面,但我真的不知道它是不是假的.
选择密码哈希方案时应该注意什么?BCrypt是一个"好"的实现吗?
以下是要实施安全登录的登录系统/
main_login.php
<form name="form1" method="post" action="checklogin.php">
Username:<input name="myusername" type="text" id="myusername" /> <br />
Password:<input name="mypassword" type="password" id="mypassword" />
<input type="submit" name="Submit" value="Login" />
</form>
Run Code Online (Sandbox Code Playgroud)
Checklogin.php
<?php
ob_start();
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="cosmos"; // Database name
$tbl_name="members"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// Define $myusername and $mypassword
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
// To protect MySQL injection (more detail about MySQL injection) …Run Code Online (Sandbox Code Playgroud) 我知道这是一个"过度询问"的话题,Bcrypt但是我对它的安全性有一些担忧.
我一直在使用sha512($password.$salt),然后寻找更好的解决方案,并遇到了Bcrypt.
关注我的是,在阅读它时,它表示rounds($02$)和salt的数量存储在3个单独的'块'中的哈希值中,就像这样,$rounds$.$salt.$hash(或者至少我是如何解释它的).
我的问题是:这不是不安全吗?显示使用的轮次数和明显可用的盐.因为攻击者可以"好吧我需要2轮,盐是123salt,那就是哈希",对吗?
我理解在阅读时,并不是"全部"都是安全的,破解密码需要多长时间,而这是Bcrypt的好处,它很慢.
有人可以澄清我的误解/误解吗?
谢谢.
所以目前我的代码使用标准sha1来散列数据库实现的密码.
什么是或者有更好的保密方式来存储密码? 也许是MD5(是的我在开玩笑)
例如,我使用Codeigniter作为我的框架,加密密码的最佳方法是什么?
所以我已经学习了很多关于PHP和Mysql的知识,我对此感到疑惑.假设我打算创建一个只存储用户名和密码的数据库(保持示例简单).我知道在不加密密码的情况下存储密码是不安全的,因为有人可能会侵入数据库.
因此,我使用MD5哈希或更安全的东西并存储加密的密码,然后我的一个用户忘记了他们的登录信息,他们想通过电子邮件检索它.
如果我使用像MD5这样的单向加密方法或更好的加密方法,如果密码是加密的并且无法解密,我应该如何向用户发送他们的登录信息?
我想为此目的(我的意思是检索部分)是否有另一种方式,或至少另一个地方,密码存储只是为了这个?
如果有人能建议一种安全存储这些信息的方法,我会很高兴,但是如果我的一个用户忘记了他们的登录信息,我就有办法安全地给他们发电子邮件.或者现在如何解决这样的问题呢?
从我所看到的MD5哈希已经被黑客入侵,所以更好的加密哈希或方法也会很好.
php ×5
bcrypt ×2
hash ×2
mysql ×2
passwords ×2
security ×2
bcrypt.net ×1
c# ×1
codeigniter ×1
login-script ×1
salt ×1