【问题标题】:Glassfish 4 - JDBC RealmGlassfish 4 - JDBC 领域
【发布时间】:2013-10-22 07:25:34
【问题描述】:

Glassfish 4 中的密码加密算法和摘要算法有什么区别? 因为密码加密算法不能为空,所以我使用了 MD5,对于 Encoding,使用了 Hex。 摘要算法为空白,因此默认为 SHA-256。

但是如果我用 JAAS 做了一个简单的登录应用程序,并创建表,插入一个用户,并且密码用 MD5 加密,用户无法登录。如果我用 SHA-256 加密密码,用户可以登录。

那么,密码加密算法字段是什么?

【问题讨论】:

  • 我在从 4.0 迁移到 4.1.1 时遇到问题 stackoverflow.com/questions/40686737/…
  • SHA-256 对于密码验证器来说仅比 MD5 稍微好一点,两者都不应该使用。当保存密码验证器时,仅使用散列函数是不够的,并且仅添加盐对提高安全性无济于事。而是使用诸如PBKDF2Rfc2898DeriveBytesArgon2password_hashBcrypt 之类的函数或类似函数。关键是让攻击者花费大量时间通过蛮力查找密码。

标签: java jdbc glassfish jaas glassfish-4


【解决方案1】:

文档在这一点上不是很清楚,但我的解释如下。这是基于Glassfish v4 reference manual

密码加密算法确定密码在您的数据库中加密的方式。这是参数digestrealm-password-enc-algorithm。您确实希望将其设置为某些东西,因为当然将密码保留在数据库中是一个安全漏洞。

当有人尝试进行身份验证时,glassfish 需要一种方法来比较提交的内容与数据库中的内容。但是,由于后者全部被锁定,因此需要一把钥匙才能解锁。该密钥上使用的加密(严格来说是散列)是在摘要算法(参数digest-algorithm)中定义的。它在 v4 中默认为 SHA-256(之前是 MD5)。

【讨论】:

    【解决方案2】:

    那么,密码加密算法字段是什么?

    摘要算法用于对登录请求进行加密/散列,而密码加密算法用于从数据库中解密密码。

    但如果我用 JAAS 制作了一个简单的登录应用程序,并创建 表,插入一个用户,密码用MD5加密, 用户无法登录。

    在密码加密字段中输入MD5,并将摘要算法留空(默认情况下,在GlassFish 4中为sha-256)。

    【讨论】:

    • 我这样做了,但是如果我想登录,它就不起作用。所以呢?但是,如果我将密码字段更改为 SHA-256 编码的密码,它就可以工作了。
    • 嗨,你解决了吗?你能把MD5放在这两个地方再试一次吗? (在数据库中使用 MD5 散列密码)。使用 GlassFish OSE 4.0 和 MySQL,Sha-256 和 MD5 加密在这里都可以正常工作。无论如何,如果它与 SHA-256 一起工作,你应该坚持下去,因为 MD5 哈希文本已被破解,仅靠由 20 个 Playstation 组成的集群的力量。SHA-256 更“安全”,因为它需要更多时间来解密它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 2012-03-10
    相关资源
    最近更新 更多