美文网首页
Objective C and Cocoa HMAC SHA25

Objective C and Cocoa HMAC SHA25

作者: jeremyplus | 来源:发表于2017-06-21 17:29 被阅读0次

    Most of the code required was for converting to bae64 and working the NSString and NSData data types.

    #import "AppDelegate.h"
    #import <CommonCrypto/CommonHMAC.h>
    
    @implementation AppDelegate
    
    - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
     NSString* key = @"secret";
     NSString* data = @"Message";
    
     const char *cKey = [key cStringUsingEncoding:NSASCIIStringEncoding];
     const char *cData = [data cStringUsingEncoding:NSASCIIStringEncoding];
     unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
     CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
     NSData *hash = [[NSData alloc] initWithBytes:cHMAC length:sizeof(cHMAC)];
    
     NSLog(@"%@", hash);
    
     NSString* s = [AppDelegate base64forData:hash];
     NSLog(s);
    }
    
    + (NSString*)base64forData:(NSData*)theData {
     const uint8_t* input = (const uint8_t*)[theData bytes];
     NSInteger length = [theData length];
    
     static char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    
     NSMutableData* data = [NSMutableData dataWithLength:((length + 2) / 3) * 4];
     uint8_t* output = (uint8_t*)data.mutableBytes;
    
     NSInteger i;
     for (i=0; i < length; i += 3) {
     NSInteger value = 0;
     NSInteger j;
     for (j = i; j < (i + 3); j++) {
     value <<= 8;
    
     if (j < length) {  value |= (0xFF & input[j]);  }  }  NSInteger theIndex = (i / 3) * 4;  output[theIndex + 0] = table[(value >> 18) & 0x3F];
     output[theIndex + 1] = table[(value >> 12) & 0x3F];
     output[theIndex + 2] = (i + 1) < length ? table[(value >> 6) & 0x3F] : '=';
     output[theIndex + 3] = (i + 2) < length ? table[(value >> 0) & 0x3F] : '=';
     }
    
     return [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; }
    
    @end
    

    相关文章

      网友评论

          本文标题:Objective C and Cocoa HMAC SHA25

          本文链接:https://www.haomeiwen.com/subject/lietcxtx.html