정말 어떻게 할 수 있는지 모르지만 MD5 해시 용 파일 두 개를 확인 중이므로 동일하거나 유사한 지 확인할 수 있습니다.MD5는 iOS의 온라인 파일에 올바른 해시를 제공하지 않습니다.
문제는 로컬 파일 (앱 번들에 저장된 파일)이 올바른 값을 제공하고 온라인 서버에 저장된 값이 나쁜 값을 제공한다는 것입니다. 그러나 Mac의 Terminal 또는 일부 인터넷 도구로 온라인 파일의 md5를 확인하면 올바른 값을 제공합니다.
어떻게 가능합니까?
이것은 기본적으로 내가하고있는 일입니다.
.H 파일 :
이 (어딘가에서 온라인으로 볼) 내가 사용하고 MD5 확장은 다음과 같습니다
NSData *currencyData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.iworldtip.com/appl/texts/files/CountryCurrency.plist"]];
NSData *localCurrencyData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"CountryCurrency" ofType:@"plist"]];
NSString *currencyDataHashValue = [currencyData md5];
NSString *localCurrencyDataHashValue = [localCurrencyData md5];
if (![currencyDataHashValue isEqual:localCurrencyDataHashValue]) {
NSLog(@"Saving new version of currency plist\n\n%@ - %@", currencyDataHashValue, localCurrencyDataHashValue);
...
...
는 출력
@interface NSString (MyExtensions)
- (NSString *) md5;
@end
@interface NSData (MyExtensions)
- (NSString*)md5;
@end
.m 파일 :
#import "md5Extension.h"
#import <CommonCrypto/CommonDigest.h>
@implementation NSString (MyExtensions)
- (NSString *) md5
{
const char *cStr = [self 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]
];
}
@end
@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
NSLog로'currencyData'와'localCurrencyData'? – mttrb
또한 plist 파일을 보내도록 구성된 서버는 어떤 content-type입니까? – mttrb
문제가 서버에 있다고 생각하지 않습니다. 왜냐하면 나는 온라인 md5 도구에 URL을 넣으려고했기 때문에 나에게 맞는 도구를 주었다. 나는 데이터를 출력하려고하지 않았다. 그것을 시도해보고 그것을 말해 줄 것이다. :) –