eMbedded Visual C++ 4.0Windows Mobile 2003Pocket PC 2002eVCWindows Mobile中级开发Visual StudioWindowsC++
MD5 散列值计算器 Pocket PC 2003/Windows CE 4.x
一个用于计算 MD5 散列值的简单工具。
引言
背景:我在我的 HP IPAQ 1940 上遇到了 SD 存储卡的一些问题。我以为我的 GPS 程序有很多错误。因为它无法处理大型地图。经过一些测试,我发现 64 MB 是一个关键的限制。我用来测试的工具是 MD5 散列计算。
我的简单方法
- 在 SD 卡上创建一个大型文件 (100 MB)。
- 在 PC 上计算 MD5 (SD 卡在读卡器中)。
- 将 SD 卡插入 IPAQ。
- 在 IPAQ 上计算 MD5。
- 检查是否相同。如果不同,将大小减半,如果散列值相同,则将文件增加 50%。
结果表明,问题出现在大约 64 MB 的文件周围。
之后,我检查了显而易见的事情 (感谢 Rob)。检查 HP 网站上是否有针对我的 IPAQ 的任何更新。并且有。所以,如果您在 IPAQ 1940(或其他型号)上遇到大型(>64 MB)文件的问题,请在 HP 网站上检查更新。1940 的更新可以从 这里 下载。
无论如何,问题已找到并解决。我认为拥有一个适用于 Pocket PC 的 MD5 散列计算器可能对您有所帮助,所以这就是它。代码的部分版权 (c) RSA Data Security, Inc。
代码片段
MD5_CTX m_md5; CString tempHash = ""; if (md5file(m_strFile.GetBuffer(MAX_PATH), 0, &m_md5)) { for (int i = 0; i < 16; i++) { char tmp[3]; _itoa(m_md5.digest[i], tmp, 16); if (strlen(tmp) == 1) { tmp[1] = tmp[0]; tmp[0] = '0'; tmp[2] = '\0'; } tempHash += tmp; } }
结果以人类可读的格式显示在 tempHash
中。
请通过电子邮件发送评论或问题。要了解我应该做的事情而不是调试 SD 卡,请访问 www.freefloat.com。