2011-07-04 5 views
1

동일한 이미지에 대해 고유 한 문자열/이름을 만들기 위해 MD5 알고리즘을 사용했습니다. 그래서 시뮬레이터 대 ipad로 테스트했습니다.시뮬레이터 및 장치의 MD5 문제 (ipad)

사파리를 사용하여 시뮬레이터에서 하나의 이미지를 다운로드하고 동일한 이미지에 대해 동일한 문자열을 생성하는 simulator.in 시뮬레이터에서 잘 작동하는 that.it 용 MD5 문자열을 생성했습니다.

그런 다음 사파리를 통해 동일한 사이트/ipad에서 ipad로 동일한 이미지를 다운로드했습니다. 이것을 위해 MD5를 만들었습니다. 문제가있어. 두 MD5가 다르다. 어느 누구도 정확한 문제를 말해 줄 수 없다.

는 다운로드 할 때 다른 크기로 동일한 이미지를 저장하는 시뮬레이터 및 ipad입니다.

#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]; 
} 
+0

이미지가 처음부터 동일합니까? – kennytm

+0

예 ........ – Christina

답변

1

가 가능한 설명은 answer to this post을 확인

MyExtensions.h


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

MyExtensions.m :

내가 코드를 사용했다.

보시다시피, CC_MD5 구현에는 32 비트 또는 64 비트 OS에서 다른 바이트 수를 사용하는 일부 데이터 유형이 포함될 수 있습니다. 그리고 시뮬레이터 (Mac OSX) 또는 장치 (iOS)에서 해싱 할 때 나타나는 차이점을 설명 할 수 있습니다.