【问题标题】:problem with MD5 in simulator and device(ipad)模拟器和设备(ipad)中的MD5问题
【发布时间】:2011-09-28 08:38:51
【问题描述】:

我使用 MD5 算法为同一图像创建唯一的字符串/名称。所以我用模拟器与 ipad 进行了测试。

我使用 safari 在模拟器中下载了一张图片并为​​此创建了 MD5 字符串。它在模拟器中运行良好。在模拟器中它总是为同一张图片创建相同的字符串。

然后我通过 safari 从同一站点/url 将相同的图像下载到 ipad。并为此创建了一个 MD5。有问题。这两个MD5不同。谁能告诉我确切的问题。

是模拟器和ipad在下载时以不同的大小保存相同的图像。

我使用了代码:

MyExtensions.h


@interface NSData (MyExtensions)
    - (NSString*)md5;
@end

MyExtensions.m

#import "MyExtensions.h"
#import <CommonCrypto/CommonDigest.h> // Need to import for CC_MD5 access

@implementation NSData (MyExtensions)
- (NSString*)md5
{
    unsigned char result[16];
    CC_MD5( self.bytes, self.length, 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]
        ];  
}
@end


-(NSString *) md5Image:(UIImage *)img {
    return [UIImagePNGRepresentation(img) md5];
}

【问题讨论】:

  • 你确定图片一开始是一样的吗?

标签: objective-c cocoa-touch ipad md5 simulator


【解决方案1】:

查看answer to this post 以获得可能的解释。

如您所见,CC_MD5 实现可以包含一些在 32 位或 64 位操作系统上占用不同字节数的数据类型。这可以解释您在模拟器 (Mac OSX) 或设备 (iOS) 上看到的散列差异。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多