我不时听到"使用bcrypt在PHP中存储密码,bcrypt规则"的建议.
但是什么bcrypt呢?PHP没有提供任何此类功能,维基百科关于文件加密实用程序的唠叨和Web搜索只是揭示了不同语言的Blowfish的一些实现.现在Blowfish也可以通过PHP获得mcrypt,但是如何帮助存储密码?Blowfish是一种通用密码,它有两种工作方式.如果它可以加密,则可以解密.密码需要单向散列函数.
解释是什么?
我正在开发一个必须具有身份验证(用户名和密码)的项目
它还连接到数据库,所以我想我会在那里存储用户名和密码.但是,将密码仅仅放在数据库中的表中的文本字段似乎不是一个好主意.
我正在使用C#并连接到2008 Express服务器.任何人都可以(尽可能多的例子)建议存储此类数据的最佳方法是什么?
PS我很乐意这样的想法,如果可以提供一个很好的理由,这些信息不会存储在数据库中
当盐析和散列用户密码时,任何盐显然都会有所帮助.盐有多长时间有什么最佳做法吗?我将盐存储在我的用户表中,所以我希望在存储大小和安全性之间进行最佳权衡.是一个随机的10个字符的盐吗?或者我需要更长的时间?
根据各种消息来源,寻找sha-1碰撞的攻击已经改进到2 ^ 52次操作:
http://www.secureworks.com/research/blog/index.php/2009/6/3/sha-1-collision-attacks-now-252/
我想知道的是这些发现对未受攻击的系统的影响.这意味着如果我对随机数据进行散列,那么碰撞的统计几率是多少?换句话说,最近的研究表明,蛮力生日攻击有更高的机会发现最初提出的碰撞吗?
一些文章,如上所述,表示通过暴力获得SHA-1碰撞需要2 ^ 80次操作.大多数消息来源说2 ^ 80是一个理论数字(我假设因为即使在其摘要空间上也没有完美地分配散列函数).
基本哈希分布中任何已公布的sha1冲突弱点是什么?或者只是导致数学攻击导致碰撞的几率增加?
我意识到最终它只是一场赔率游戏,并且它们是一个无限小的变化,你的第一个和第二个消息将导致碰撞.我也意识到即使是2 ^ 52也是一个非常大的数字,但我仍然想了解对不受攻击的系统的影响.所以请不要回答"不要担心".
我刚开始学习php,并决定让自己接受编码寄存器和登录脚本的挑战.
我不确定如何继续.现在,在你搜索我的代码之前......请不要成为关于sql注入和bobby表的漫步者.我明白了,但目前还没有看到它.
无论如何,我用漩涡和盐加密了密码.目前salt是静态的,不确定如何使用Time()函数实现一个,而不是通过将其定位在数据库中来破坏目的.我试图解决的问题是如何检查用户是否输入了与用户名和HASHED密码匹配的用户名和密码.
这是我目前的代码,我假设最重要的部分将在login.php文件中.
<?php
//connect.php
$connection = mysql_connect("localhost","root","") or die("Couldn't connect to database");
mysql_select_db("test", $connection);
?>
Run Code Online (Sandbox Code Playgroud)
<?php
//index.php
include 'connect.php';
define('salt','7hPqMO(m=F+!!L6(#Yhp-CdF, &Q}+cIrA;c@wcP(E--V<qRmq!v*aSnM;H=4cD0');
if(isset($_POST['username']) && isset($_POST['fullname']) && isset($_POST['email']) && isset($_POST['password'])) {
$username = mysql_real_escape_string($_POST['username']);
$fullname = mysql_real_escape_string($_POST['fullname']);
$email = mysql_real_escape_string($_POST['email']);
$password = mysql_real_escape_string($_POST['password']);
$encryptedPassword = hash( 'whirlpool',salt.$password );
$sql="INSERT INTO `users` (username, fullname, email, password)
VALUES
('$username', '$fullname','$email','$encryptedPassword')";
if(!mysql_query($sql,$connection)) {
die('Error: ' . mysql_error());
} else {
mysql_close($connection);
header('Location: login.php?redirectedFromRegister=1');
}
}
?>
<html>
<body>
<form action="index.php" method="post"> …Run Code Online (Sandbox Code Playgroud)