【问题标题】:Random salt encryption / decryption随机盐加密/解密
【发布时间】:2016-07-08 02:41:36
【问题描述】:

我正在尝试加密第三方密码并在需要时解密。我想知道是否有任何标准解决方案可以将密码与每个密码的随机盐独立地混合起来,类似于 BCrypt 是如何做到的?

感谢您的帮助!

【问题讨论】:

  • 您只是想进行哈希验证还是真的想加密/解密密码?栈交换的IT安全站点你知道吗? bcrypt 还不够标准化吗?
  • @WildGoat:这听起来像是一个关于“密码散列”的问题,而不是“加密”。 The difference isn't subtle.
  • salt for hashing 的等价物是初始化向量IV for encryption。 Hasing是一种方式,加密是两种方式,因此它们在不同的情况下使用。

标签: encryption cryptography salt


【解决方案1】:

PBKDF2 是基于密码的加密 (PBE) 标准中使用的基于密码的密钥派生函数,也称为 PKCS#5,并在 RFC 2898 中标准化。 Java 和 .NET 都包含开箱即用的该方案的实现。

【讨论】:

  • @MaartenBodewes,我基本上是在寻找防止彩虹表和暴力破解的好方法。您认为 PBKDF2 是否足够好?
  • @MaartenBodewes,似乎 PBKD2 是一种单向哈希函数,我需要的是加密和解密密码的方法,其中包括一些随机盐。或者你认为包含用户名和常量键就足够了吗?
  • 盐专用于密钥派生,而不是加密。 bcrypt 和 PBKDF2 都是 基于密码的 密钥派生函数。从这个意义上说,这个答案直接为问题中所述的问题提供了一个解决方案(“......标准解决方案将密码与每个密码的随机盐独立地混合起来,类似于 BCrypt 的做法”)。什么是“足够”取决于您的用例和威胁模型,两者都没有得到很好的描述(因此在您的问题下方发表评论)。
  • 如果你的意思是,混合一个 master 密码和 salt 来加密每个第三方密码,这正是 PBKDF2 给你的。然后,它肯定足以对抗彩虹表和蛮力。因为,攻击者是在加密密码之后。但这是由基于主密码的唯一一次性密钥加密的。与该密钥一样强,加密的密码是安全的。例如,一个 128 位密钥和一个使用随机 IV 的 AES 密码是完全足够的,给定一个好的主密码、好的随机盐和大量的 PBKDF2 迭代次数。
猜你喜欢
  • 2014-11-30
  • 2011-04-30
  • 2016-04-09
  • 1970-01-01
  • 1970-01-01
  • 2013-09-22
  • 2010-10-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多