Questions tagged «salt»

加密函数,它采用随机位和字符串(通常是密码)并使用单向哈希来提供新的字符串,该字符串可用于身份验证,而无需提供对原始字符串的访问。如果盐函数使用足够的随机位,则通常认为所得字符串在密码上是安全的。

5
您在哪里存放盐串?
在对数据库存储的密码进行哈希处理时,我一直使用正确的按条目输入的盐字符串。出于我的需要,将盐存储在数据库中散列密码旁边一直很好。 但是,有些人建议将盐与数据库分开存储。他们的论据是,如果数据库遭到破坏,攻击者仍然可以构建一个彩虹表,并考虑到特定的盐字符串,以便一次破解一个帐户。如果该帐户具有管理员权限,那么他甚至不需要破解任何其他帐户。 从安全角度来看,将盐存储在其他位置是否值得?考虑在同一台计算机上具有服务器代码和数据库的Web应用程序。如果将盐类存储在该计算机上的平面文件中,则很有可能如果数据库遭到破坏,则盐类文件也会被破坏。 有什么建议的解决方案吗?

10
密码盐如何帮助抵抗彩虹表攻击?
我在理解对密码加盐的目的时遇到了一些麻烦。据我了解,主要用途是阻止彩虹表攻击。但是,我见过的实现此问题的方法似乎并没有真正使问题变得更难。 我看过许多教程建议将盐用于以下用途: $hash = md5($salt.$password) 原因是哈希现在不映射到原始密码,而是密码和盐的组合。但是说$salt=foo和$password=bar和$hash=3858f62230ac3c915f300c664312c63f。现在,拥有彩虹表的人可以反转哈希并提出输入“ foobar”。然后,他们可以尝试所有密码组合(f,fo,foo,... oobar,obar,bar,ar,ar)。可能需要花费几毫秒的时间才能获取密码,但除此之外没有多少其他信息。 我见过的另一种用法是在我的linux系统上。在/ etc / shadow中,哈希密码实际上与 salt 存储在一起。例如,盐“ foo”和密码“ bar”将散列为此:$1$foo$te5SBM.7C25fFDu6bIRbX1。如果黑客以某种方式能够获得此文件,那么我就看不到salt的用途是什么,因为te5SBM.7C25fFDu6bIRbX已知的反向哈希包含“ foo”。 感谢您提供的任何信息。 编辑:感谢您的帮助。总而言之,盐使散列密码变得更加复杂,因此使其不太可能存在于预先计算的彩虹表中。我之前误解的是我以为所有哈希都存在一个彩虹表。

1
我需要用bcrypt存储盐吗?
bCrypt的javadoc具有以下用于加密密码的代码: String pw_hash = BCrypt.hashpw(plain_password, BCrypt.gensalt()); 要检查纯文本密码是否与先前已哈希的密码匹配,请使用checkpw方法: if (BCrypt.checkpw(candidate_password, stored_hash)) System.out.println("It matches"); else System.out.println("It does not match"); 这些代码段向我暗示,随机生成的盐将被丢弃。是这种情况,还是只是误导性的代码片段?

14
C#中的哈希和盐密码
我刚刚浏览了DavidHayden的有关散列用户密码的文章之一。 真的我无法理解他想要达到的目标。 这是他的代码: private static string CreateSalt(int size) { //Generate a cryptographic random number. RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider(); byte[] buff = new byte[size]; rng.GetBytes(buff); // Return a Base64 string representation of the random number. return Convert.ToBase64String(buff); } private static string CreatePasswordHash(string pwd, string salt) { string saltAndPwd = String.Concat(pwd, …
178 c#  hash  passwords  salt 

6
如何安全地存储用户密码?
这比普通的MD5安全多少?我刚刚开始研究密码安全性。我对PHP很陌生。 $salt = 'csdnfgksdgojnmfnb'; $password = md5($salt.$_POST['password']); $result = mysql_query("SELECT id FROM users WHERE username = '".mysql_real_escape_string($_POST['username'])."' AND password = '$password'"); if (mysql_num_rows($result) < 1) { /* Access denied */ echo "The username or password you entered is incorrect."; } else { $_SESSION['id'] = mysql_result($result, 0, 'id'); #header("Location: ./"); echo …

8
给密码加盐:最佳做法?
我一直很好奇...给哈希密码加盐时,哪种更好:前缀还是后缀?为什么?还是重要,只要你加盐? 解释一下:到现在,我们所有人(希望如此)都知道在对密码进行哈希处理以存储到数据库之前,应该先对密码加盐 [ 编辑:这样就可以避免Jeff Atwood最近发生的事情 ]。通常,这是通过在盐经过哈希算法之前将盐与密码连接起来来完成的。但是示例各不相同...一些示例在密码前加盐。一些示例在密码后添加盐。我什至看到一些尝试将盐撒在中间的方法。 那么哪种方法更好,为什么呢?有没有一种方法可以减少哈希冲突的机会?我的Google搜索功能尚未对此问题进行过体面的分析。 编辑:乡亲们很好的答案!对不起,我只能选择一个答案。:)

4
最佳做法:添加密码?
我遇到了一个讨论,在该讨论中,我了解到我实际上在做的并不是给密码加盐,而是给它们添加了胡椒粉,从那时起,我就开始使用以下功能: hash_function($salt.hash_function($pepper.$password)) [multiple iterations] 忽略选择的哈希算法(我希望这是关于盐和胡椒的讨论,而不是特定算法的讨论,但我使用的是安全算法),这是安全的选择还是我应该做一些不同的事情?对于那些不熟悉这些术语的人: 甲盐是通常存储与设计,使其不可能使用哈希表来破解密码的数据库中的字符串中的随机生成值。由于每个密码都有自己的特色,因此必须将所有密码单独强行破解。但是,由于盐与密码哈希一起存储在数据库中,因此数据库泄密意味着同时丢失两者。 甲胡椒是从中旨在是秘密的数据库(在应用程序的源代码通常硬编码)分开存储站点范围静态值。使用它是为了避免对数据库造成危害,不会导致整个应用程序的密码表都是蛮力的。 我有什么遗漏的东西吗?保护密码安全的最佳选择是保护我的用户的安全吗?这样做是否有潜在的安全缺陷? 注意:出于讨论目的,假设应用程序和数据库存储在单独的计算机上,不共享密码等,因此违反数据库服务器并不自动意味着违反了应用程序服务器。

5
用户密码盐的最佳长度是多少?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 改善这个问题 盐分和哈希用户密码时,任何盐分都显然会有所帮助。是否有关于盐应保留多长时间的最佳实践?我将盐存储在用户表中,因此我希望在存储大小和安全性之间取得最佳平衡。随机添加10个字符的盐是否足够?还是我需要更长的时间?
128 encryption  hash  salt 

8
在Python中加盐并哈希密码
该代码应该用盐来散列密码。盐和哈希密码将保存在数据库中。密码本身不是。 鉴于该操作的敏感性,我想确保所有内容都是洁净的。 import hashlib import base64 import uuid password = 'test_password' salt = base64.urlsafe_b64encode(uuid.uuid4().bytes) t_sha = hashlib.sha512() t_sha.update(password+salt) hashed_password = base64.urlsafe_b64encode(t_sha.digest())

7
如何使用PHP的password_hash哈希和验证密码
最近,我一直在尝试在互联网上偶然发现的登录脚本上实现自己的安全性。在尝试学习如何制作自己的脚本以为每个用户生成盐的努力之后,我偶然发现了password_hash。 据我了解(基于本页的阅读内容),当您使用时,盐已经在行中生成password_hash。这是真的? 我的另一个问题是,吃2种盐不是很聪明吗?一个直接在文件中,另一个在数据库中?这样,如果有人破坏了数据库中的盐,您仍然直接在文件中保留了盐吗?我在这里读到,存储盐从来都不是一个聪明的主意,但是它总是让我感到困惑。

11
为什么盐会使字典攻击“不可能”?
更新:请注意,我并不是在问盐是什么,彩虹表是什么,字典攻击是什么,盐的目的是什么。我正在查询:如果您知道用户盐和哈希,那么计算他们的密码不是很容易吗? 我了解该过程,并在我的一些项目中亲自实施了该过程。 s = random salt storedPassword = sha1(password + s) 在您存储的数据库中: username | hashed_password | salt 我所见过的每一种盐化实现都在密码末尾或开头添加盐分: hashed_Password = sha1(s + password ) hashed_Password = sha1(password + s) 因此,来自黑客的字典攻击值得他的盐分(哈哈),只需按上面列出的常见组合针对存储的盐分运行每个关键字。 当然,上述实现只是为黑客增加了又一步,而没有真正解决根本问题?有什么替代方案可以解决此问题,还是我误解了该问题? 我唯一想做的是拥有一个秘密混合算法,该算法以随机模式将盐和密码绑在一起,或者将其他用户字段添加到哈希过程中,这意味着黑客将不得不访问数据库并绑上代码他们通过字典攻击证明卓有成效。(更新,如评论中指出的那样,最好假设黑客可以访问您的所有信息,所以这可能不是最好的)。 让我举一个例子,说明我如何建议黑客使用一系列密码和哈希值来入侵用户数据库: 来自被黑数据库的数据: RawPassword (not stored) | Hashed | Salt -------------------------------------------------------- letmein WEFLS... WEFOJFOFO... 常用密码字典: Common Password -------------- letmein …

6
盐生成和开源软件
据我了解,生成盐的最佳实践是使用一些存储在源代码中的神秘公式(甚至魔术常数)。 我正在开发一个计划以开源形式发布的项目,但是问题在于,该来源附带了生成盐的秘密公式,因此可以在我们的网站上进行彩虹表攻击。 我认为很多人在我之前已经考虑了这个问题,我想知道最佳实践是什么。在我看来,如果代码是开源的,就根本没有必要添加盐,因为可以很容易地对盐进行逆向工程。 有什么想法吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.