65.9K
CodeProject 正在变化。 阅读更多。
Home

MD5 散列值计算器 Pocket PC 2003/Windows CE 4.x

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.09/5 (5投票s)

2005年5月17日

CPOL

1分钟阅读

viewsIcon

54213

downloadIcon

259

一个用于计算 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

© . All rights reserved.