听说大型科技公司最近的黑客攻击,我不禁想知道他们对密码存储的使用。
我知道salting+散列通常被认为是安全的,但我见过的salting的例子都将salt密钥硬编码到密码脚本中,密码脚本通常存储在同一个服务器上。
那么,最初对用户密码进行散列,将该散列传递给“salting服务器”或存储在场外的某个函数,然后将salted散列传递回来,这是一个逻辑解决方案吗?
我的看法是,如果入侵者获得了对包含存储密码的服务器或数据库的访问权,他们将无法立即访问salt密钥。
没有--即使攻击者知道salt仍然有效。
salt的思想是,它使对大量用户的字典攻击更加困难。在没有salt的情况下,攻击者会对字典中的所有单词进行散列,并查看哪些单词与用户的散列密码匹配。对于salt,他必须对字典中的每个单词进行多次散列(每个可能的散列值一次),以确保有一个适合每个用户的单词。
然而,我应该补充的是,在许多(大多数?)在这种情况下,一个非常大的盐并不能真正增加很多安全性。问题是,如果您使用一个24位的salt(大约1600万个可能值),但只有几百个用户,攻击者可以提前收集您实际使用的salt值,然后只对这些值而不是大约1600万个潜在值进行字典攻击。简而言之,你的24位盐只增加了一点点难度,超过了一个~8位盐所能提供的。
对于大型服务器(Google、Facebook等)来说,情况完全不同--一个大的salt会变得非常有益。
尽管我有点困惑,我是否应该将salt输入到我的PBKDF2函数中,并将salt存储在一列中,而将PBKDF2的密码存储在另一列中。 我也在使用CodeIgniter,并找到了一个用于PBKDF2的库(https://github.com/hashemqolami/codeigniter-pbkdf2-library),它声称我不需要单独存储salt。 使用作为推荐的用户密码注册用户;无需单独存储用
作为练习,我用C编写了自己的SHA-512哈希函数实现。我知道它是有效的,因为我从abc 在Base64中。就像在测试现场一样。 我有两个问题: > 如何加密我的密码?如果我有: 我应该创建字符串以输入盐通过="ssssssssmy密钥密码"吗?或者可能以相反的方式?我试图在谷歌上到处寻找答案——我找不到真正合适的东西。 在base64中,我应该使用什么编码来获得像/etc/shadow文件中那样
问题内容: 我试图弄清楚如何使用crypto模块对nodejs中的密码进行加盐和哈希处理。我可以这样做来创建哈希密码: 但是我对以后如何验证密码感到困惑。 问题答案: 在您使用的任何持久性机制(数据库)中,您都将在哈希值和迭代次数之间存储结果哈希,这两者都是纯文本。如果每个密码使用不同的盐(您应该这样做),则还必须保存该信息。 然后,您将比较新的纯文本密码,使用相同的盐(和迭代次数)对其进行哈希处
问题内容: 目前,据说MD5部分不安全。考虑到这一点,我想知道使用哪种机制进行密码保护。 这个问题,“双重哈希”密码是否比仅hash一次密码安全?建议多次散列可能是一个好主意,而如何对单个文件实施密码保护建议使用盐。 我正在使用PHP。我想要一个安全,快速的密码加密系统。将密码hash一百万次可能更安全,但也更慢。如何在速度和安全性之间取得良好的平衡?另外,我希望结果具有恒定数量的字符。 hash
本文向大家介绍C#使用 Salt + Hash 来为密码加密,包括了C#使用 Salt + Hash 来为密码加密的使用技巧和注意事项,需要的朋友参考一下 (一) 为什么要用哈希函数来加密密码 如果你需要保存密码(比如网站用户的密码),你要考虑如何保护这些密码数据,象下面那样直接将密码写入数据库中是极不安全的,因为任何可以打开数据库的人,都将可以直接看到这些密码。 解决的办法是将密码加密后再存储进
我想得到的是 使用libnail加密密码salt 我有一个列表的盐,我想用它来加密/解密我的密码。当我加密密码时,我得到一个哈希返回,这样一个似乎可以工作,但在解密时,我总是得到假返回值。 我是否使用了错误的方法对libnaude进行加密/解密,还是完全朝着错误的方向行驶? 我的加密/解密源: 我感谢任何帮助! 多姆