首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何存储密码散列?

如何存储密码散列?
EN

Stack Overflow用户
提问于 2020-07-28 19:03:36
回答 3查看 1.7K关注 0票数 0

TLDR:,在将密码哈希存储到数据库之前,海布里是如何处理密码哈希的?因为数据库字段中的值不是标准密码散列。

我不得不在上面添加TLDR,因为两个用户发布的答案表明他们没有阅读(或理解)这个问题。

我和1905年的海布里一起工作。当我在后台设置用户密码时,我可以选择哈希算法的类型,包括MD5、SHA-256和其他几种。然而,存储在数据库中的密码值显然不是算法中的简单散列。例如,下面是密码test1234的散列,以及各种哈希算法:

  • 盐渍MD5:1:Gtjd5QVM/t0HLT5PvZCU4g==s9B8Vw/BIkzixwzMzueRR1R6WY9y8Fq9BqFqwGIuY2fGK+KFYSXjNf5G0fbAlb9u
  • 沙-256:1:etvHTnwzMfX/DnbNPhmQBA==8jq6sLLcb/PrIhVB9D+YA61L2mr0dlBYr/84G/K9Kzqe4gpvPF10ja8RaIE94b3A+joszlMutGrHezDs871A/8Yr4oVhJeM1/kbR9sCVv24=
  • 沙-512:1:ZSaQW0C+r/NMVwRRVTCm9w==4qQJdmvU4PE02ipY0Mvkp2sb+bMuMHTiMIVE2m6NESzv2BEFG2O1MIjkzFUES6f7jzoVOEuVmd/E8mqOUoogbL9rpkOPmeMEj5EpB2iued3UAouLvv6PuUCyFJGJdoRsZJzwO2Lj30iokY4RsG0OKXYuGdUjNYU7X1AUggH+eWfGK+KFYSXjNf5G0fbAlb9u
  • PBKDF2 (HMAC−SHA1 1):1:HIKWvUwTA/pVC9mXzl9qgw==NOsr8pkNUIbEGoiWFa5oArnlEfZNALK0cuczK7dxtxHbDTby+7w3ml1pf8HNmXjalq1A/tSvlb+gwZMRS4Q7ncMhU5w1b6HwV+BGEBG9ecqahzUOK7mNZrLbh9t50M0mRr2AVQJnn7bfvdJ5E3C4UPdoN44v1mAgIuC/9RKTnhj/1BhjHqKf1pozhFfoBz8FdSxBQMmKY91/c4VzkinqiSy5wkaWjOSQQuAN9ZoWmvw=
  • BCrypt:1:GL1kPl93Nx4RjOymIhC1Kw==Xh9ZddGPIxUqpipcEvJ+bRHApEyWVPkXtxPlsYgzokUo4ktC/vh4weA6hrMEebtQC/OttaVzG3+9tUCHxFHCcw==

很明显,这是海布里在选择的哈希算法之上进行的某种编码--但它是什么呢?它是编码(即可以解码)还是散列?

我需要将一个庞大的用户数据库从另一个平台迁移到这个海布里安装。我有现有的用户名和相应的散列密码,我想导入这些密码。这些是标准的bcrypt散列,因此相同的test1234字符串将具有散列$2y$16$mK9cm.pwOp8ve9oH0VqkT.123HGy/RHYLcd1GB.N5zEqBylV.22wm。然而,我很难理解如何将这个散列导入Hybris用户表。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-07-29 14:19:30

在将密码哈希存储在数据库中之前,海布里如何处理密码哈希呢?因为数据库字段中的值不是标准密码散列。

这是因为encodedPassword属性使用encrypted="true"修饰符声明。由于这一原因,在存储到DB之前对值进行加密。阅读更多关于透明属性加密(TAE)以及它如何在傲慢中工作的文章。

代码语言:javascript
复制
 <attribute autocreate="true" qualifier="encodedPassword" type="java.lang.String">
            <persistence type="property" qualifier="Passwd">
                <columntype>
                    <value>HYBRIS.LONG_STRING</value>
                </columntype>
            </persistence>
            <modifiers read="true" write="true" search="true" optional="true" encrypted="true"/>
        </attribute>

在您的示例中,您可能需要创建自己的密码编码器并将其设置为所有迁移的用户,这样您的系统就可以使用自定义编码器对迁移的用户进行身份验证,然后可以重定向用户重置密码。在重置密码流中,可以使用新的OOTB编码器更新密码编码,以便生成新的哈希。

其他参考资料12

票数 1
EN

Stack Overflow用户

发布于 2020-07-28 22:13:50

自满总是将密码存储在。SAP中的默认策略是PBKDF2。必要时,可以通过default.password.encoding属性对其进行更改。您还可以通过实现实现您自己的密码编码策略接口和添加自定义密码编码策略beancore.passwordEncoderFactory bean来实现core.passwordEncoderFactory

票数 -1
EN

Stack Overflow用户

发布于 2020-07-29 06:18:19

为了纠正我的答案,Hybris总是创建一个包含用户名和密码的散列。

->PasswordEncoderFactoryImpl类负责根据编码输入提供正确的编码器类。--->factory.getEncoder(encoding).encode(user.getUID(),密码)

傲慢支持

您可以使用已经存在的测试用户进行测试,并且知道密码以生成基于散列键的algo,并匹配编码的密码,它应该给出相同的结果。

这里的编码是pbkdf2

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63141113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档