【问题标题】:How secure is javax.crypto.Cipher?javax.crypto.Cipher 的安全性如何?
【发布时间】:2011-10-22 18:34:57
【问题描述】:

我对密码学的了解足以让新手程序员的生活变得困难,并被安全专家嘲笑。因此,考虑到这一点,我问:javax.crypto.Cipher 的安全性如何?我知道有意志有办法的人可以破解任何东西,但我还是想知道相关细节。

我问的原因是我想存储将通过我的Cryptor 类发送的帐户名和密码,它们将加密它们,并想知道这是否可以完成这项工作。如果有人有任何我可以阅读的文献,那将不胜感激。

谢谢~艾顿

【问题讨论】:

  • 浏览Jasypt 文档。那里有很多很好的链接。

标签: java security encryption


【解决方案1】:

如果您打算安全地存储密码,那么您的要求与简单的“安全/私密通信”完全不同。 Cipher 本身不足以保护您。您需要使用其中之一

在这种情况下。 Here 是一些关于密码安全的论点和链接。

关键是“正常”加密(或散列)太快了,无法阻止严重的攻击者。您想人为地减慢整个过程,以使有人系统地攻击您的应用程序变得尽可能困难。单个用户在输入密码时不会注意到 1 毫秒或 500 毫秒之间的差异,但对于攻击者来说,这意味着为了破坏您的方案,平均需要花费 500 倍的时间 - 所以如果它大约需要以前需要1个月才能找到有效密码,现在需要500个月。

【讨论】:

  • 感谢您的详细解释。
【解决方案2】:

Cipher 是应用加密/解密算法的通用类。其安全性取决于所使用的实际加密算法(DES、三重 DES、AES 等)、其密钥的大小以及您选择的块链接类型。

【讨论】:

  • 啊,我明白了。如何更改密钥的大小?当我尝试为我的 SercretKeySpecIvParameterSpec 使用 32 字节密钥时,我遇到了大量异常问题?我浏览了文档,但不清楚。
  • DES 有一个 64 位密钥,其中只有 56 位被实际使用。 AES 具有 128 或 256 位密钥。如果您正在加密帐户名和密码,我建议在 CTR 模式下使用 AES-128,这样您就不会使用填充来扩展数据。 CTR 模式不像 CBC 模式那样需要填充。
【解决方案3】:

因为NullCipherCipher - 根本不安全。

【讨论】:

    猜你喜欢
    • 2013-01-19
    • 2019-04-03
    • 2010-10-31
    • 2011-06-01
    • 2016-06-19
    • 2011-03-12
    • 2014-12-29
    • 2016-08-30
    相关资源
    最近更新 更多