Authentication SAP使用的密码哈希算法已知吗?

Authentication SAP使用的密码哈希算法已知吗?,authentication,cryptography,passwords,sapb1,Authentication,Cryptography,Passwords,Sapb1,使用的版本:SAP B1 9.0 背景 我们希望为外部用户提供一个简单的身份验证web表单,并希望使用SAP B1用户管理来管理用户(当然还有密码) 由于我们无法找到密码散列背后的算法,我的老板还考虑使用与SAP用户不同的字段,如egMobile Device ID,并在那里存储密码。让它以纯文本的形式存储在那里,并且可能被其他用户以各种形式看到,这对我来说是一个非常糟糕的主意,这就是为什么我在这里征求意见的原因 这里最好有人知道散列算法,盐是否单独存储,等等:-) 信息 web应用程序可以访问

使用的版本:SAP B1 9.0

背景 我们希望为外部用户提供一个简单的身份验证web表单,并希望使用SAP B1用户管理来管理用户(当然还有密码)

由于我们无法找到密码散列背后的算法,我的老板还考虑使用与SAP用户不同的字段,如eg
Mobile Device ID
,并在那里存储密码。让它以纯文本的形式存储在那里,并且可能被其他用户以各种形式看到,这对我来说是一个非常糟糕的主意,这就是为什么我在这里征求意见的原因

这里最好有人知道散列算法,盐是否单独存储,等等:-)

信息 web应用程序可以访问存储SAP数据的SQL数据库,但不能与SAP进行“直接”通信

实际问题
  • SAP使用哪种哈希算法
  • 或者,如果不知道,是否有不同的解决方法

  • 这是一个有趣而又困难的问题

    我试过一些方法,但没有找到有效的解决办法。 但在这里,我的结果可能会有所帮助:

    密码散列似乎是一个含盐的SHA1

    密码salt存储在
    OUSR.STData
    中。还有一个字段
    OUSR.nospwdnum
    ,但我不知道它是如何一起工作的

    DIPI SDK帮助文件对字段的描述如下:

    • STData:用户密码Salt | nVarchar(40)
    • NoSTPwdNum:密码加密,不含Salt(加密)| Int(6)

    我试过一些方法,但都不管用。例如,密码前后的salt、密码散列和添加salt、大小写散列/salt等等。

    虽然我不知道该算法是否为公众所知,但有一个解决方法:您可以使用提供的用户名和密码,并尝试使用这些凭据打开与DI-API的连接。通过这种方式,您可以确保SBO施加的所有访问限制都得到了遵守(就像非活动用户一样)。

    我对B1了解不多,因此我不会添加答案,但我同意您的看法-以纯文本形式存储密码是一个糟糕的主意。+1 Thx用于共享!这至少是第一步…:-)他们可能会使用额外的胡椒和多轮散列(而不仅仅是一轮)。