Encryption SHA-256是否适合密码加密?

Encryption SHA-256是否适合密码加密?,encryption,cryptography,sha256,Encryption,Cryptography,Sha256,我正在我的服务器上实现一个用户配置文件(注册),在那里我必须存储用户帐户和密码。我试图存储加密的密码作为安全措施,有人建议我使用SHA-256 说到密码术,我是个初学者,但在黑客访问我的数据库并窃取一大堆加密密码的情况下,SHA-256加密不容易受到已知的明文攻击吗?例如,如果他们知道“密码”被散列成什么,他们只需要做一个简单的字符串匹配就可以知道哪些帐户使用该特定密码 SHA-256是否适合密码加密 就其本身而言,不是。当用作带有附加控件的原语时,是 SHA-256加密易受已知明文攻击?例如,

我正在我的服务器上实现一个用户配置文件(注册),在那里我必须存储用户帐户和密码。我试图存储加密的密码作为安全措施,有人建议我使用SHA-256

说到密码术,我是个初学者,但在黑客访问我的数据库并窃取一大堆加密密码的情况下,SHA-256加密不容易受到已知的明文攻击吗?例如,如果他们知道“密码”被散列成什么,他们只需要做一个简单的字符串匹配就可以知道哪些帐户使用该特定密码

SHA-256是否适合密码加密

就其本身而言,不是。当用作带有附加控件的原语时,是

SHA-256加密易受已知明文攻击?例如,如果他们知道“密码”被散列成什么,他们只需要做一个简单的字符串匹配就可以知道哪些帐户使用该特定密码

这是一个不同的安全属性:)它被称为安全的PRP概念,而散列缺少它。Dan Bohen有一个很好的幻灯片平台

散列是一个伪随机函数。使用散列时,攻击者可以区分oracle的真实输出和随机输出(如您所观察到的)

HMAC也是PRF(伪随机函数),它具有PRP安全性的概念,因为攻击者在查询同一oracle时无法区分真实答案和随机答案。HMAC的钥匙确保了这一点

因此,您的第一个任务是使用基于SHA-256的HMAC,而不是直接使用SHA-256:)


请参阅John Steven为OWASP撰写的文章。它将带您了解整个威胁模型,并解释为什么要以特定的方式进行操作。

SHA-256是一种哈希算法。我强烈建议您为正在开发的任何平台查看现有的用户管理解决方案。大多数现代平台都有一个。如果你是密码学的初学者,更是如此。这可能是security.stackexchange上的一个常见问题。这个问题似乎离题了,因为它与编程无关。普通SHA-256不适合密码哈希。虽然salt可以防止多目标攻击,但当使用GPU(甚至更糟的是,ASIC)执行猜测攻击时,猜测攻击是非常有效的。这就是为什么我们使用专门的密码哈希,如:on security.SE所述。