2011-01-29 3 views
2

문자열에서 SHA1 해시를 계산하고 다른 문자열에 다시 넣는 데 문제가 있습니다. 여기 내가하는 일 :NSString에서 SHA1 해시를 사용하여 NSData를 캡처하는 방법은 무엇입니까?

unsigned char hashedChars[20]; 
CC_SHA1([hashElements UTF8String], [hashElements lengthOfBytesUsingEncoding:NSUTF8StringEncoding], hashedChars); 
NSData *hashedData = [NSData dataWithBytes:hashedChars length:20]; 
NSString *hash = [[NSString alloc] initWithData:hashedData encoding:NSUTF8StringEncoding]; 
NSLog(@"%s", hash); 

로그의 결과는 (null)입니다. 기본적으로 문자열을 조합하여 문자열을 만든 다음 NSData 객체에 저장된 해시를 계산하고 해시 문자열에 다시 저장합니다. hashedData를 기록 할 때 결과가 분명하게 나타날 수 있습니다 - 올바른 것으로 보입니다. 그것은 네 번째 줄에서 뭔가 잘못되었다는 것을 나타냅니다. 근데 뭐? 어떤 도움이라도 대단히 감사합니다.

안부,

레인 더

답변

3

SHA-1은 20 바이트의 이진 청크 유효한 UTF-8 스트링이다. 이것이 NSString의 initWithData:encoding:이 실패하는 이유입니다. 해시 합계 표현에 일반적으로 사용되는 것은 16 진수 문자열입니다. 기본적으로 필요한 것은 [hashedData description]입니다.

+0

화려한, 의미가 있습니다. 감사! –

관련 문제