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;
}
좋습니다. 고마워, 나는 방법을 얻은 근원에 가서 내가 그 부분을 오해한다는 것을 깨달았다. 또한 커맨드 라인에서 같은 값을 해싱 할 때 왜 생성 된 해시가 다른지 설명합니다. 나는 왜 내 오류 코드가 주어진 동일한 '해시'를 반환하는 방법을 알고 궁금하다! – tommi
우연의 일치. char 포인터는 메모리를 가리키고 있으며 문자열의 길이와 같았다는 것을 추측해야합니다. 메모리가 문자열 인스턴스가 아니라 클래스 인스턴스를 가리키고 있습니다. – zaph