Swift中相同字符串的不同md5哈希

Posted

技术标签:

【中文标题】Swift中相同字符串的不同md5哈希【英文标题】:Different md5 hash for same string in Swift 【发布时间】:2015-12-12 15:54:50 【问题描述】:

我目前正在开发基于网站特定 API 的 swift 应用程序。我使用 md5 函数来创建有效的 url 并访问一些 JSON 数据,我可以使用 SwiftJSON 在我的应用程序中引入这些数据。

我在第 6 个 url 上工作得很好,但后来我的 url 校验和出现错误。我检查了一下,发现我在 swift 中的 md5 函数得到了错误的哈希

在我的快速程序中,字符串“answerfr1%3D%3DQf7AjOptTN6k2OyoTa7QjOptDM6k2OzoTa7cjOptjM6k2O1oTa7EjOptDMxoTa7AjOptnO2oTY”的哈希值 给我这个“09938c1325c87ef89251f668a8cf5d42” 但这不正确,因为我的链接无效

但是通过http://www.md5.cz/自己做 我有这个结果“9d78b73d28f590beb8ef25b5e4b99a1d”,我的链接工作得很好。

我不知道为什么我的 md5 函数对 6 第一个哈希没有问题,但给我一个错误的 7 哈希。

我意识到 www.md5.fr 给了我同样的错误代码。为什么相同的字符串有不同的 md5 哈希?

我在 swift 中的 md5 函数: How to convert string to MD5 hash using ios swift

希望你们在这里理解我的问题! 对不起我的英语不好

【问题讨论】:

您在 swift 程序中得到的东西可能是 NSData(我不太确定),尝试将其转换为字符串并再次打印。让 convertString = NSString(data: yourData, encoding: NSUTF8StringEncoding) 您必须将百分比转义“%3D%3D”解码为“==”。 【参考方案1】:

感谢 Martin R,您解决了我的问题 “%3D”等于“=” 所以 "%3D%3D" 等于 "=="

【讨论】:

以上是关于Swift中相同字符串的不同md5哈希的主要内容,如果未能解决你的问题,请参考以下文章

MD5碰撞

PHP md5 相等绕过

PHP处理0e开头md5哈希字符串缺陷/bug

CTF之MD5相等值不相等

2.哈希加密 & base64加密

2个不同文件的computehash相同