【问题标题】:OMA DM1.2 md5 digest calculationOMA DM1.2 md5 摘要计算
【发布时间】:2013-05-18 14:05:03
【问题描述】:

我正在使用 OMA DM 1.2 SyncML 协议实现通信服务器,并参考OMA Device Management Security 文档。我遇到了身份验证问题。客户端向服务器发送挑战:

<Chal>
    <Meta>
        <Format xmlns="syncml:metinf">b64</Format>
        <Type xmlns="syncml:metinf">syncml:auth-md5</Type>
        <NextNonce xmlns="syncml:metinf">RLLe7tWM313qHMq9ooUZUPJX0RqU9mEZuyoVF+jXhqQ=</NextNonce>
    </Meta>
</Chal>

然后我使用 java 代码计算 md5-digest 以返回到设备,其中 nonce 是上述挑战中“NextNonce”中的 Base64 字符串:

MessageDigest digest = MessageDigest.getInstance("MD5");
String usrPwd = username + ":" + password;
String usrPwdHash = Base64.encodeBase64String(digest.digest(usrPwd.getBytes("utf-8")));
String usrPwdNonce = usrPwdHash + ":" + nonce;
String usrPwdNonceHash = Base64.encodeBase64String(digest.digest(usrPwdNonce.getBytes("utf-8")));
return usrPwdNonceHash;

然后这个哈希返回到设备为:

<Cred>
        <Meta>
              <ns2:Type>syncml:auth-md5</ns2:Type>
              <ns2:Format>b64</ns2:Format>
        </Meta>
        <Data>QpbMtvvfNGRIavJ0jqcxaw==</Data>
</Cred>

但设备返回状态 401 和新的质询。我计算 md5-hash 的方式有问题还是一定有其他问题?

【问题讨论】:

    标签: md5 syncml oma-dm


    【解决方案1】:

    发现我的错误。 nonce 应该是解码后的 Base64 字符串值,而不是 Base64 字符串。

    nonce = new String(Base64.decodeBase64("RLLe7tWM313qHMq9ooUZUPJX0RqU9mEZuyoVF+jXhqQ="), "utf-8");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-26
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多