2017-03-08 71 views
0

我想用随机盐存储一个散列密码。散列值应该是,在两个不同的sql表中是唯一的。跨2个不同的sql表的独特散列值

盐由随机字符和数字组成,密码和登录中不允许使用斜线。

为了确保唯一性,我想追加一个分隔符和唯一的登录名。

实施例(伪码):

hash(salt + password + “/” + login)  

这样做是为了避免寻找唯一随机盐两个不同的表。

如果我用这种方式构建存储的散列,它会不太安全吗?

+0

只使用散列函数是不够的,只是添加一个盐没有提高安全性。取而代之的是用随机盐对HMAC进行大约100毫秒的持续时间并用散列表保存盐。使用“PBKDF2”,“Rfc2898DeriveBytes”,“password_hash”,“Bcrypt”等功能。关键是要让攻击者花费大量时间通过强力查找密码。 – zaph

回答

0

这听起来像你没有使用正确类型的“散列”函数来“散列”你的密码,因为如果你是,那么你就不需要问这个问题。

诸如SHA系列的普通散列函数不适合保护密码。问题在于它们太快而无法计算,这意味着密码可能会被强制使用。欲了解更多信息,请阅读this

你应该使用的是一个函数,如bcrypt(或者如果不可用,至少使用pbkdf2)将输入salt和密码作为单独的参数,并输出你存储在你的“散列”数据库。

我将代表加密和安全社区为这个令人困惑的词"hash"使用道歉。不幸的是,它看起来不会很快被修复。

+0

谢谢你的伟大的链接(https://www.troyhunt.com/our-password-hashing-has-no-clothes/),阅读(和理解)的文字后,我可能会回来澄清我的问题。 – selcox