【问题标题】:I am integrating an android API where stuck to generate xwsse token with the following case我正在集成一个 android API,在以下情况下生成 xwsse 令牌
【发布时间】:2020-04-06 21:24:56
【问题描述】:

我正在我的 android 应用程序中集成一个 API,在以下情况下无法生成 XWSSE 令牌:

来自 PHP:

  1. 令牌
  2. 用户名

安卓:

  1. 时间戳
  2. 10位随机数
  3. 两者结合
  4. SHA 1 代。
  5. 将此 SHA1 设为大写,这给了我们 NONCE。
  6. 我们收到的 Nonce + Timestamp + token 再次连接
  7. Base64 转换。
  8. 再次生成SHA1。 (目前它得到 40 个字符的结果(应该是 20 个字符的二进制))
  9. base64 编码。 (这将得到一个 PasswordDigest,应该是 28 个字符,我们得到 56 个字符)

谁能建议在这里可以做些什么来获得 28 个字符的 PasswordDigest ?

【问题讨论】:

    标签: java android kotlin sha1


    【解决方案1】:

    您必须使用Base64.encodeToString() 函数来解决您的问题,请参阅此答案了解更多详情

    https://stackoverflow.com/a/4769110/5427353

    您可以创建这样的函数来获得您想要的密码摘要的确切结果

    private fun getSHA1(type: String, input: String): String {
         val bytes = input.toByteArray() //input should be (nonce + created + password)
         val md = MessageDigest.getInstance(type) //type should be "SHA-1".
         val digest = md.digest(bytes) // This returns the same string of bytes as $digest = sha1($input, true);
    
         var passwordDigest = Base64.encodeToString(digest,Base64.DEFAULT) //This returns 28 character password digest. same as base64_encode(sha1($input, true));
    
         return passwordDigest;
    }
    

    【讨论】:

    • 这是否返回 28 个字符 passworddigest ?让我试试。
    猜你喜欢
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-21
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    相关资源
    最近更新 更多