2009-05-08 2 views

답변

5

이것은 내가 내 응용 프로그램에서 삭제하기 전에 내가했던 방법입니다

#import <CommonCrypto/CommonDigest.h> 

NSString* md5(NSString *str) { 
    const char *cStr = [str UTF8String]; 
    unsigned char result[CC_MD5_DIGEST_LENGTH]; 

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

그것은 내가이에게 자신을 작성하지 않은 것을 추가 공평. 나는 그것을 인터넷 어딘가에서 발견했지만 나는 기록하지 않았다.

4

필요한 MD5 해시를 생성하는 데 사용한 코드는 CommonCrypto 하위 폴더의 my github repository에 있습니다. CommonCrypto를 사용하는 방법이나 16 진수 바이트 값, 64 진수 문자열 등의 형식을 지정하는 방법을 보여줄 유사한 루틴들이 많이 있습니다.

잠재적으로 더 좋은 문자열 생성 방법은 다음과 같습니다.

위의 대답에 코드를 사용하려고하는 경우
NSMutableString * str = [[NSMutableString alloc] initWithCapacity: 33]; 
int i; 
for (i = 0; i < 16; i++) 
{ 
    [str appendFormat: @"%02x", result[i]]; 
} 
NSString * output = [str copy]; 
[str release]; 
return ([output autorelease]); 

그러나, 나는 개인적으로뿐만 아니라 16 진수 값을 생성 할 수 있습니다 % 02x로 %의 02X 년대를 변경하고 -lowercaseString 통화 completely--을 삼가는 게 좋을 것 소문자로 시작합니다.

관련 문제