繁体   English   中英

Objective-C中的渐进式HMAC SHA256

[英]Progressive HMAC SHA256 in Objective-C

我需要使用HMAC SHA256生成哈希。 我在JavaScript中使用以下代码。 我需要在Objective-C中使用等效的代码。

function serialize( obj ) {
   return Object.keys(obj).reduce(function(a,k){a.push(k+'='+encodeURIComponent(obj[k]));return a},[]).join('&')
}

var query = {
  Action            : 'MyAction',
  SignatureMethod   : 'HmacSHA256',
};

var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, 'MYVALUE');
var queryString = ['POST', 'm.service.it', '/api/v2', serialize(sorted)].join('\n');

hmac.update(queryString);
query.Signature = CryptoJS.enc.Base64.stringify(hmac.finalize());

如何在Objective-C中实现呢?

HMAC-SHA256示例代码:

+ (NSData *)hmacSha256:(NSData *)dataIn
               key:(NSData *)key
{
    NSMutableData *macOut = [NSMutableData dataWithLength:CC_SHA256_DIGEST_LENGTH];
    CCHmac( kCCHmacAlgSHA256,
           key.bytes,
           key.length,
           dataIn.bytes,
           dataIn.length,
           macOut.mutableBytes);

    return macOut;
}

笔记:

  1. Security.framework添加到项目
  2. 必须包括通用加密:
    #import <CommonCrypto/CommonCrypto.h>

  3. 这是数据输入和输出,请在前后添加任何转换到所需的表示形式。
    转换可以是将字符串转换为输入数据,将数据转换为Base64输出:
    NSData *data = [@"string" dataUsingEncoding:NSUTF8StringEncoding];
    NSString *string = [data base64EncodedStringWithOptions:0];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM