- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我昨天问了一个关于安全散列的问题,这让我开始思考如何破解使用自定义散列算法创建的密码。我当前的(非常不安全的)密码脚本在密码上使用 sha1 的迭代,然后对由 3 位盐预先生成的哈希进行迭代。
$hash = sha1($pass1);
//creates a 3 character sequence
function createSalt()
{
$string = md5(uniqid(rand(), true));
return substr($string, 0, 3);
}
$salt = createSalt();
$hash = sha1($salt . $hash);
$hash = sha1( 'password' );
$salt = '3Sf';
$hash = sha1( $salt.$hash);
$hash = sha1( 'password' );
$salt = '3Sf';
for($i; $i<1000; $i++){
$hash = sha1( $salt.$hash);
}
最佳答案
据我所知,没有广泛可用的哈希破解工具支持此功能。
但是,正如您所说,如果有足够的时间,编写一个程序来破解散列将非常简单。
如果你的攻击者已经知道你计算加盐哈希的方法,我们可以安全地假设他可以访问你的数据库(它也必须存储盐),它的转储或访问你的应用程序和客户端之间的纯文本通信.
然后破解哈希,他会简单地复制你的 sha1($salt . $hash) 函数并开始向它输入通用密码。与纯暴力强制所有可能的组合相比,这将节省时间。他会从您的数据库中获取 $salt 并将哈希加盐哈希密码的结果与存储在同一数据库中的加盐哈希进行比较。
如果生成的哈希值匹配,则密码已被“破解”。
一般来说,为每个用户使用单独的盐是一个好主意,因为它会以指数方式增加破解整个数据库密码表的时间。与其使用单个盐对单个散列函数运行词表,他必须针对数据库中的每个散列 PW 运行整个词表。
也就是说,如果攻击者深入到您的系统中以实际获取哈希/盐,那么他将更容易更改您的代码以向他发送最初登录的用户凭据的纯文本副本。
关于passwords - 如何暴力破解多次散列的密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6344849/
用户将输入重量阈值、物体数量以及 3 个物体的重量和成本。输出应该是背包图,并且应该显示最优解。 重量应该最大,成本应该最小。 示例输出: w=60 n=3 w = 10 w2 = 35 w3 = 3
所以我在学习 Python 的同时从“Violent Python”开始黑客攻击,我遇到了一个问题这是我的代码: import optparse import socket from socket i
我是一名优秀的程序员,十分优秀!