惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
V
Visual Studio Blog
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
B
Blog
I
InfoQ
博客园 - 三生石上(FineUI控件)
阮一峰的网络日志
阮一峰的网络日志
F
Fortinet All Blogs
H
Help Net Security
博客园 - Franky
宝玉的分享
宝玉的分享
博客园 - 司徒正美
C
Check Point Blog
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Jina AI
Jina AI
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
云风的 BLOG
云风的 BLOG
A
About on SuperTechFans
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家

博客园 - biggates

Linux Screen 超简单用法 ldconfig gdb前端Nemiver 在Ubuntu中使用autofs自动加载Virtual Box数据空间 -lm 必须放在 gcc 命令的最后 常用WinXP小工具集合 VritualBox 数据空间使用手记 在 Google Buzz 中使用格式 x64 WAMP + Oracle 环境搭建 查看Oracle Dump文件的结构 解决 Vista 下 IceGrid 调试时的监视错误 - biggates 使用163镜像在线安装CentOS C#中从WSDL文件生成Web 服务 有图有真相,百度屏蔽网站行为仍在继续 [转]CSS Hacks 浏览器功能一览:IE曾经垃圾,现在垃圾,将来仍然很垃圾 三步实现 OpenSearch 功能 学习笔记 使用 Java 正则表达式解析 VCard
令人痛苦的SyncML同步协议错误
biggates · 2009-06-10 · via 博客园 - biggates

今天上午一直在翻OMA的SyncML 1.1 协议,卡在用户验证的地方,按照协议上的例子怎么算也算不出来预期的结果。

根据协议正文,MD5验证的算法很简单,用伪代码来表示就是这样:

result = base64( md5( base64( md5( username + ":" + password)) + ":" + nonce) );

用php写出来就是:

function computehash($username, $password, $nonce){
    
return base64_encode(pack('H*', md5(base64_encode(pack('H*', md5("$username:$password"))) . ":$nonce")));
}

但是用协议里指定的参数:

username="Bruce1" , password="OhBehave" , nonce="Nonce"

无论如何也算不出协议里给的值"Zz6EivR3yeaaENcRN6lpAQ==", 而是 "+MEIKFrF8Qdou2B1H2YmXw=="

一气之下用 .NET 写了一个,结果也是相同的。

Code

经过多方搜索,终于在 这里 发现了原因:协议写错了。正确的参数应该是:

username="Bruce2" , password="OhBehave" , nonce="Nonce"

我Faint…