php - Obj C MD5 与 PHP md5() 函数不同

标签 php objective-c xml md5

我目前在使用此代码片段时遇到一些问题:

- (NSString *) md5:( NSString *) str 
{
    const char *cStr = [str UTF8String];
    unsigned char result[16];
    CC_MD5( cStr, strlen(cStr), result ); // This is the md5 call
    return [NSString stringWithFormat:
            @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
            result[0], result[1], result[2], result[3], 
            result[4], result[5], result[6], result[7],
            result[8], result[9], result[10], result[11],
            result[12], result[13], result[14], result[15]
            ];  
}

此方法生成下载的 XML 文件的哈希值,这与 PHP 函数 md5() 完全不同。

那么我如何获得与 PHP 相同的哈希值,反之亦然。

最佳答案

如果您在 PHP 中执行 echo md5('hello') 您将收到一个 32 个字符长的字符串,但是当您在 ObjC 中使用代码片段时,您会将字符串字符转换为十六进制格式(通过使用格式化程序 %02x) - 请参阅此处 https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265在这里:Unsigned Char Array to Hex Representation NSString .

并且您仅使用一半的 MD5 字符串字符来创建此十六进制格式的字符串...要么立即返回结果,要么在 PHP 中执行相同的十六进制转换:-)

关于php - Obj C MD5 与 PHP md5() 函数不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10548381/

相关文章:

php - 在 "security"代码拧紧后重置发布数据

php - 将 rand() 输出存储到 mysql 数据库错误

javascript - javascript onclick 属性如何通过循环从数组中获得更多输出?

ios - 地幔 iOS : How to create class model with variable key

c++ - Objective-C++ 是与 Objective-C 完全不同的语言吗?

java - 解析大型 XML 文件并动态生成 SQL 表

android - 在水平线性布局中,如何从左到右而不是从右到左添加

php - 如何匹配不包含单词的字符串?

iphone - 我怎样才能从 ios 中的导航 Controller 清除 View

java - 在 JAXB 中表示多个元素名称