проблема с MD5 в симуляторе и устройстве (ipad) - PullRequest
1 голос
/ 04 июля 2011

Я использовал алгоритм MD5 для создания уникальной строки / имени для одного и того же изображения ... так что я тестировал на симуляторе против ipad.

Я скачал одно изображение в симуляторе с помощью Safari и создал строку MD5 для этого.отлично работает в simulator.in симуляторе, он всегда создает одну и ту же строку для одного и того же изображения.

, затем я загрузил одно и то же изображение в ipad с того же сайта / URL через Safari.и создал 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];
}

1 Ответ

1 голос
/ 05 июля 2011

Проверьте ответ на этот пост для возможного объяснения.

Как видите, реализация CC_MD5 может содержать некоторый тип данных, который принимает разное количество байтов в 32-битной или 64-битной ОС. И это может объяснить разницу, которую вы видите в хешировании на симуляторе (Mac OSX) или устройстве (iOS).

...