有人能描述一下密码加密和散列(sha-256)之间的区别吗?



我需要将密码保存到数据库。我不太懂加密,哈希使用sha-256,盐生成方法。如果有人解释一下这背后的基本概念会很有帮助

下面是一个非常基本的解释…

  • 加密是一种可逆的数据加密方法。因此,如果你有"密码"一种加密方法将其转换为(例如)"ufmehlejw",然后你可以再次获得"密码"。
  • 哈希函数(其中之一是sha-256)是一种函数,一旦它在字符串上使用,您就无法恢复原始字符串。
  • salt是一个字符串,通常程序员(当然不仅仅是)使用它来混合给定的密码。它通常是随机生成的。盐用于在使用哈希函数之前扩展原始数据。盐的目标是避免攻击者使用彩虹表从被盗的哈希中发现用户的原始密码。

总之:

加密是一个有逆的过程。换句话说:如果我加密一些文本,有一个过程能够将新文本转换回原始文本,称为解密

哈希从根本上不同于加密,因为它没有而没有有这样一个过程。散列的作用是为您提供一个结果,该结果对于给定的输入文本是唯一的(好吧,几乎是唯一的,让我们保持它是唯一的)。这样,人们就可以验证两个输入文本是否相等,而不知道实际的输入文本是什么。所以,如果别人得到你的散列密码,他们仍然无法解密它。SHA是一组提供哈希的方法。

Salts和Peppers只是哈希的附加技术,它们描述了在哈希之前在输入文本之前和之后添加一些东西的过程。这提高了暴力破解哈希回文本的难度。

暴力破解意味着简单地尝试所有可能的输入(aa, ab, ac等),看看你是否可以生成一个与你通过黑客攻击某些网站或其他方式获得的哈希相匹配的哈希。你可以在这里找到更多信息:https://security.stackexchange.com/questions/3272/password-hashing-add-salt-pepper-or-is-salt-enough

最新更新