2011-10-07 4 views
1

나는 아주 의아해합니다. 내 애플 리케이션 에서이 방법을 사용하고, 내가 두 개의 다른 문자열을 전달하면, 그것은 나에게 같은 결과를 반환 할 수 있습니다.MD5 해시를 생성하는 메서드에서의 Wierd 동작 - 동일한 해시 결과를 반환합니다.

그러나이 방법을 다른 앱에 복사하면 결과가 정상적으로 나타납니다. 두 문자열에 대해 전혀 다른 결과가 나타납니다.

+(NSString *) returnMD5HashOfString:(NSString*)aString 
{ 
    // Create byte array of unsigned chars 
    unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH]; 

    // Create 16 byte MD5 hash value, store in buffer 
    CC_MD5(aString, aString.length, md5Buffer); 

    // Convert MD5 value in the buffer to NSString of hex values 
    NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2]; 
    for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) 
     [output appendFormat:@"%02x",md5Buffer[i]]; 

    return output; 
} 

답변

1

CC_MD5는 문자열을 예상하지 않으므로 char 포인터를 필요로합니다.

+0

좋습니다. 고마워, 나는 방법을 얻은 근원에 가서 내가 그 부분을 오해한다는 것을 깨달았다. 또한 커맨드 라인에서 같은 값을 해싱 ​​할 때 왜 생성 된 해시가 다른지 설명합니다. 나는 왜 내 오류 코드가 주어진 동일한 '해시'를 반환하는 방법을 알고 궁금하다! – tommi

+0

우연의 일치. char 포인터는 메모리를 가리키고 있으며 문자열의 길이와 같았다는 것을 추측해야합니다. 메모리가 문자열 인스턴스가 아니라 클래스 인스턴스를 가리키고 있습니다. – zaph

관련 문제