рдЖрдЗрдП рдЖрдкрдХреЗ рд╕рд╛рде рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдХрд╛рд░реНрдп рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ - рдХреБрдЫ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╣реИрд╢ рд░рд╛рд╢рд┐ рдХреА рдЧрдгрдирд╛ред рд╕рдорд╕реНрдпрд╛ рд╕рд░реНрд╡рд╡реНрдпрд╛рдкреА рд╣реИ, рдпрд╣ OAuth рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рд╣рдо iOS рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдиреАрдЪреЗ, рдореИрдВ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЛрдб рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдмрд╕реЗ рд╕реБрдВрджрд░ (рдореЗрд░реА рд░рд╛рдп рдореЗрдВ) рд╕рдорд╛рдзрд╛рди рджрд┐рдЦрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
- рд╣рдореЗрдВ
NSString
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рддрд╛рд░ рджрд┐рдП рдЧрдП рд╣реИрдВ; - рдХреБрдЫ рд╕реНрдЯреНрд░рд┐рдВрдЧ
NSString
рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЗрд╕рдХреА рд╣реИрд╢ рд░рд╛рд╢рд┐ рдХреЗ рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ; - рд╣рдореЗрдВ рдЪрдпрдирд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рдмрд╕реЗ рдХреЙрдореНрдкреИрдХреНрдЯ рдФрд░ рд╕реБрдВрджрд░ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП;
рд░рд╛рд╢рд┐ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЧрдгрдирд╛
рддреЛ, рд╣рдореЗрдВ рдХреБрдЫ рд╕реНрдЯреНрд░рд┐рдВрдЧ
NSString* string = @тАЭTrololoтАЭ
ред MD5 рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рджреНрд╡рд╛рд░рд╛ рдЗрд╕рдХреА рд╣реИрд╢ рд░рд╛рд╢рд┐ рдХреА рдЧрдгрдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрд╣ рдЕрддреНрдпрдВрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
- рд╣рдо рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ CommonCrypto / CommonDigest.h;
- рд╣рдо рдЕрдкрдиреЗ рддрд╛рд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ;
- рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЪрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИрд╢ рдЖрдЙрдЯрдкреБрдЯ рдмрдлрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ;
- рд╣рдо рд╣реИрд╢ рд░рд╛рд╢рд┐ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ;
- рдЕрдВрдд рдореЗрдВ, рд╣рдо NSData рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХрдЪреНрдЪреЗ рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ;
рдпрд╣ рд╕рдм рдЕрдВрддрддрдГ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
#import <CommonCrypto/CommonDigest.h> тАж NSString* string = @тАЭTrololoтАЭ; const char* data = [string UTF8String]; unsigned char hashBuffer[CC_MD5_DIGEST_LENGTH]; CC_MD5(data, strlen(data), hashBuffer); NSData* result = [NSData dataWithBytes:hashBuffer length:CC_MD5_DIGEST_LENGTH];
рддрджрдиреБрд╕рд╛рд░, рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
CC_MD5(...)
рдФрд░ рд╕реНрдерд┐рд░
CC_MD5_DIGEST_LENGTH
рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдЗрдП рдПрдХ рдорд╛рдорд▓реЗ рдХреЛ рджреЗрдЦреЗрдВ рдЬрд┐рд╕рдореЗрдВ рд╣реИрдо рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдЪрдПрдордПрд╕реА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣, рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреА рддрд░рд╣, рд▓рдЧрднрдЧ рдПрдХ рд▓рд╛рдЗрди рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ -
CCHmac(...)
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ, рдЬрд┐рд╕рдореЗрдВ рд╣реИрд╢ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣
kCCHmacAlgMD5
ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдФрд░ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ -
<CommonCrypto/CommonHMAC.h>
ред
#import <CommonCrypto/CommonDigest.h> #import <CommonCrypto/CommonHMAC.h> NSString* string = @тАЭTrololoтАЭ; NSString* hmacKey = @тАЭhmacKeyтАЭ; const char* data = [string UTF8String]; const char* hmacData= [hmacKey UTF8String]; unsigned char hashBuffer[CC_MD5_DIGEST_LENGTH]; CCHmac(kCCHmacAlgMD5, hmacData, strlen(hmacData), data, strlen(data), hashBuffer); NSData* result = [NSData dataWithBytes:hashBuffer length:CC_MD5_DIGEST_LENGTH];
рдбреЗрдЯрд╛ рд╡реНрдпрд╛рдЦреНрдпрд╛
рдЕрдм рд╣рдореЗрдВ NSString рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рджреЛ рд╕рдмрд╕реЗ рдЖрдо рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
- рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдЗрдЯ рдХреЛ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдХреЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛;
- рдФрд░ рдмреЗрд╕ 64 рдореЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛;
рдПрдХ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ
рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ рдФрд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
- рд╣рдо рдкрд┐рдЫрд▓реЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЕрдВрддрд┐рдо рдЪрд░рдг рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ (рд╣рдо NSData рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ) рдФрд░ рдХрдЪреНрдЪреЗ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ;
- рдЬрдм рддрдХ рдХрдЪреНрдЪреА рдмрд╛рдЗрдЯреНрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИрдВ, рддрдм рддрдХ рд╣рдо рджреЛ рдмрд╛рд░ рдПрдХ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ;
- рдкреНрд░рд╛рдкреНрдд рд╣реИрд╢ рдмрдлрд░ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП, рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЕрдкрдиреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ;
NSString* string = @тАЭTrololoтАЭ; const char* data = [string UTF8String]; unsigned char hashBuffer[CC_MD5_DIGEST_LENGTH]; CC_MD5(data, strlen(data), hashBuffer); NSMutableString* result = [[NSMutableString alloc] initWithCapacity:CC_MD5_DIGEST_LENGTH*2]; for (int i= 0; i < CC_MD5_DIGEST_LENGTH; i++) [result appenFormat:@тАЭ%02XтАЭ, hashBuffer[i]];
рдПрдХ Base64 рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ
рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдХреБрдЫ рд╣рдж рддрдХ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдмреЗрд╕ 64 рдореЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдФрд░ рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдбреЗрдЯрд╛ рдХрд╛ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рдЬреЛ
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рддреИрдпрд╛рд░-рдирд┐рд░реНрдорд┐рдд рд╕реНрдереИрддрд┐рдХ рд╡рд┐рдзрд┐ рд╣реИ, рдЬреЛ NSData рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЙрдЯрдкреБрдЯ рдкрд░ Base64 рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреА рд╣реИред рддрдм рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
NSData* buffer = [NSData dataWithBytes:hashBuffer length:CC_MD5_DIGEST_LENGTH]; NSString* result = [Base64 encode:buffer];
рд╢реНрд░реЗрдгреА рдбрд┐рдЬрд╛рдЗрди
рддреЛ, рдпрд╣ рдЖрдЦрд┐рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ - рдкреНрд░рд╕реНрддреБрдд рдХреЛрдб рдХреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рдпрд╣рд╛рдВ рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рднрд╛рд╖рд╛ рдХреА рдПрдХ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдпрд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЕрд░реНрдерд╛рддреН, рд╢реНрд░реЗрдгрд┐рдпрд╛рдВред
рд╢реНрд░реЗрдгрд┐рдпрд╛рдВ рдПрдХ рдореМрдЬреВрджрд╛ рд╡рд░реНрдЧ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рддрд░реАрдХрд╛ рдЬреЛрдбрд╝рдХрд░ рдПрдХ рддрдВрддреНрд░ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдЙрдирдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рддреЛ рдЖрдкрдХрд╛ рдЕрдкрдирд╛ рдпрд╛ рдХреЛрдИ рд╕рд┐рд╕реНрдЯрдоред рд╣рдо
NSString
рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдРрд╕реА рд╢реНрд░реЗрдгреА рд▓рд┐рдЦреЗрдВрдЧреЗред рд╣рдо рдХреНрд░рдорд╢рдГ рджреЛ рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рд╣реЗрдбрд░
NSString+Hash.h
рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╝рд╛рдЗрд▓
NSString+Hash.m
рдПрдХ рд╢реНрд░реЗрдгреА рдХреЛ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рд╡рд░реНрдЧ рдХреА рддрд░рд╣ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдирд┐рдореНрди рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде: рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдХреЗ рдмрд╛рдж, рд╢реНрд░реЗрдгреА рдХрд╛ рдирд╛рдо рдХреЛрд╖реНрдардХ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдмреНрд▓реЙрдХ рдЫреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рдХреА рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ (рджреЛ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╣реИрд╢рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдПрдордбреА 5 рдФрд░ рдПрд╕рдПрдЪрдП 1 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рднреА рддрд░реАрдХреЗ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╣реИрдВ):
#import <Foundation/Foundation.h> #import <CommonCrypto/CommonHMAC.h> #import <CommonCrypto/CommonDigest.h> #import "Base64.h" @interface NSString (NSString_NM_HASH) //RAW - (NSData*) MD5; - (NSData*) SHA1; - (NSData*) HMAC_MD5: (NSString*)hmacKey; - (NSData*) HMAC_SHA1: (NSString*)hmacKey; //INTERPRET Base64 - (NSString*) MD5_x64; - (NSString*) SHA1_x64; - (NSString*) HMAC_MD5_x64:(NSString*)hmacKey; - (NSString*) HMAC_SHA1_x64:(NSString*)hmacKey; //INTERPRET HEX - (NSString*) MD5_HEX; - (NSString*) SHA1_HEX; - (NSString*) HMAC_MD5_HEX:(NSString*)hmacKey; - (NSString*) HMAC_SHA1_HEX:(NSString*)hmacKey; @end
рд╣рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦреЗрдВрдЧреЗ - рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо SHA1 рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рд╕рдореВрд╣ рд╕реЗ рдПрдХ рд╡рд┐рдзрд┐ рджрд┐рдЦрд╛рдПрдВрдЧреЗред
#import тАЬNSString+Hash.hтАЭ @implementation NSString (NSString_NM_HASH) - (NSData*) HMAC_SHA1: (NSString *)hmacKey{ const char* data = [self UTF8String]; const char* hashKey = [hmacKey UTF8String]; unsigned char hashingBuffer[CC_SHA1_DIGEST_LENGTH]; CCHmac(kCCHmacAlgSHA1, hashKey, strlen(hashKey), data, strlen(data), hashingBuffer); return [NSData dataWithBytes:hashingBuffer length:CC_SHA1_DIGEST_LENGTH]; } - (NSString*) HMAC_SHA1_x64:(NSString *)hmacKey{ return [Base64 encode:[self HMAC_SHA1:hmacKey]]; } - (NSString*) HMAC_SHA1_HEX:(NSString *)hmacKey{ const char* data = [self UTF8String]; const char* hashKey = [hmacKey UTF8String]; unsigned char hashingBuffer[CC_SHA1_DIGEST_LENGTH]; CCHmac(kCCHmacAlgSHA1, hashKey, strlen(hashKey), data, strlen(data), hashingBuffer); NSMutableString* result = [[NSMutableString alloc] initWithCapacity:CC_SHA1_DIGEST_LENGTH*2]; for (int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) [result appendFormat:@"%02X", hashingBuffer[i]]; return result; } @end
рдирд┐рд╖реНрдХрд░реНрд╖
рдирддреАрдЬрддрди, рдХрд┐рд╕реА рднреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд╣реИрд╢ рд░рд╛рд╢рд┐ рдХреА рдЧрдгрдирд╛ рдмрд╣реБрдд рддреЗрдЬ рдФрд░ рдХреЙрдореНрдкреИрдХреНрдЯ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
#import тАЬNSString+Hash.hтАЭ NSString* string = @тАЭTrololoтАЭ; NSString* string_md5 = [string MD5_HEX]; NSString* string_sh1 = [string SHA1_x64];