我目前在使用此代码片段时遇到一些问题:
- (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/