MD5哈希套管问题

时间:2014-06-06 14:12:52

标签: objective-c md5

我遇到一个问题,我的方法返回的MD5字符串都是大写字母。除了使用[string lowerCaseString]以外,还有一种方法可以使方法的输出返回小写字符串吗?上面的方法对我来说似乎很苛刻。

以下是我正在使用的方法:

- (NSString *)MD5String {
const char *cstr = [self UTF8String];
unsigned char result[16];
CC_MD5(cstr, strlen(cstr), result);

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]
        ];
}

1 个答案:

答案 0 :(得分:4)

为什么是hackish? MD5结果中的大小写区别是没有意义的,因为实际上它不是一个返回的字符串,而是几个十六进制数字。正确的修改是使你的比较方法(假设你以后比较哈希)忽略它的情况,因为它应该没关系。

在任何情况下,您都可以通过将格式说明符更改为小写来使其小写:

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]
        ];