我正在阅读一些关于盐和密码哈希的文章,还有一些人提到彩虹攻击.什么是彩虹攻击以及防止它的最佳方法是什么?
我一直在查看hashlib文档但是在散列数据时没有找到任何关于使用salt的内容.
帮助会很棒.
如何使用Spring Security 3散列密码并加密它们?
好的,我想了解使用盐的原因.
当用户注册时,我为他/她生成一个我存储在DB中的唯一盐.然后我用SHA1散列它和密码.当他/她登录时我会重新哈希sha1($salt.$password)
.
但如果有人攻击我的数据库,他可以看到哈希密码和盐.
是否更难破解而不仅仅是用盐哈希密码?我不明白......
对不起,如果我是傻瓜......
我正在尝试使用bcryptjs生成用户密码的哈希值.但是我在一件事情上有点困惑.
按照惯例,根据这一条款,我们需要:
因此,当我们在验证用户时比较哈希时,我们将存储的盐附加到用户输入的密码,并将其与来自数据库的哈希进行比较.
然而,使用hashSync和compareSync bcryptjs如下:
//hashSync to generate hash
var bcrypt = require('bcryptjs');
var password = "abc";
var hash = bcrypt.hashSync( <some string>, < integer length of salt>) // the salt of mentioned length(4-31) is self-generated which is random and fairly unique
//compareSYnc to compare hash
var testString="abc";
console.log(bcrypt.compareSync(testString, hash)) // compares with previously generated hash returns "true" in this case.
Run Code Online (Sandbox Code Playgroud)
我感到困惑的是,如果我们在验证时不需要盐,那么产生它的意义何在?compareSync返回时true
无需访问salt.所以它不会让相对较小的密码容易遭受暴力攻击吗?无论盐的大小如何,以下所有内容都返回true:
console.log(bcrypt.compareSync("abc", bcrypt.hashSync("abc"))); // consoles true. by default, if …
Run Code Online (Sandbox Code Playgroud) 我最近开始设置PureFTP服务器的任务.在工作中我们使用Postgresql 8.4.架构基本上归结为,
username text
password character(40)
password_salt text
Run Code Online (Sandbox Code Playgroud)
该password
存储为哈希sha1( password + salt )
.使用Postgresql的pgcrypto我可以提供一个username
,password
并找出用户是否有auth:
SELECT
encode( digest( $password ||password_salt, 'sha1' ), 'hex' ) = password
AS password_correct
, username
, password
, password_salt
FROM contact.person;
Run Code Online (Sandbox Code Playgroud)
现在我遇到的问题是这样的功能需要我将密码输入查询.Pureftp目前的auth-postgresql实现似乎不太可行.它仅支持提供:
\L is replaced by the login of a user trying to authenticate.
\I is replaced by the IP address the client connected to.
\P is replaced by the port number the client connected to.
\R is replaced …
Run Code Online (Sandbox Code Playgroud) 我正在使用Adam Griffiths的CodeIgniter身份验证库,我正在调整用户模型.
我遇到了他用来生成令牌的生成函数.
他首选的方法是引用random.org的值,但我认为这是多余的.我正在使用他的后退方法随机生成一个20个字符长的字符串:
$length = 20;
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$token = '';
for ($i = 0; $i < $length; $i++) {
$token .= $characters[mt_rand(0, strlen($characters)-1)];
}
Run Code Online (Sandbox Code Playgroud)
然后他使用盐哈希这个令牌(我正在梳理来自不同功能的代码)
sha1($this->CI->config->item('encryption_key').$str);
Run Code Online (Sandbox Code Playgroud)
我想知道是否有任何理由通过盐渍哈希运行令牌?
我已经读过,只是随机生成字符串是一种天真的方式来制作随机密码但是sh1哈希和盐是必要的吗?
注意:我从https://www.grc.com/passwords.htm获取了我的encryption_key (63随机字母数字)
我正在浏览Michael Hartl的书(真棒,免费资源,顺便说一下,谢谢迈克尔!)我有一个关于盐渍和哈希密码的问题.腌制密码的目的是防止黑客进行彩虹攻击,如果我理解正确的话,如果黑客可以猜测所使用的加密类型,那么基本上就是暴力攻击.为了防止这种攻击,使用salt在密码加密之前随机化密码,但该密码必须与加密密码一起存储?如果是这样,那么如果黑客可以访问数据库并检索加密密码,那么他们是否也无法检索盐并继续进行彩虹攻击?
这是Michael的代码示例...
>> Time.now.utc
=> Fri Jan 29 18:11:27 UTC 2010
>> password = "secret"
=> "secret"
>> salt = secure_hash("#{Time.now.utc}--#{password}")
=> "d1a3eb8c9aab32ec19cfda810d2ab351873b5dca4e16e7f57b3c1932113314c8"
>> encrypted_password = secure_hash("#{salt}--#{password}")
=> "69a98a49b7fd103058639be84fb88c19c998c8ad3639cfc5deb458018561c847"
Run Code Online (Sandbox Code Playgroud)
非常感谢!
我想建立一个允许将加密密码(哈希密码)从一个系统迁移到另一个系统的系统.我该怎么办?
说2个月后,我发现加密速度提高了10倍,目前的哈希函数已经被证明毫无疑问,完全是脆弱的.我将如何将用户密码从一种类型的哈希迁移到另一种哈希(更好的一种).
前几天我在课堂上,我们正在谈论 Unix SALT 以及它如何使密码更难猜测。我的问题是 SALT 以明文形式存储在散列密码旁边,那么如何使其更安全?我的意思是如果 SALT 就在那里,那么你附加它然后散列你的猜测。此外,关于在彩虹表中预先计算猜测的问题对我来说也没有意义。您只需查看 SALT 并首先使用给定的 SALT 预先计算它。我能想到的唯一论点是恶意用户无法访问 /etc/password 文件,但黑客如何知道密码的哈希值。如果有人能指出我正确的方向,我将不胜感激。谢谢!
saltedhash ×10
hash ×4
salt ×4
encryption ×2
bcrypt ×1
cryptography ×1
hashlib ×1
java ×1
migration ×1
node.js ×1
passwords ×1
postgresql ×1
pureftpd ×1
python ×1
sha ×1
spring ×1
unix ×1