当前位置:  开发笔记 > 编程语言 > 正文

是否有适用于iPhone的库可以使用HMAC-SHA-1编码

如何解决《是否有适用于iPhone的库可以使用HMAC-SHA-1编码》经验,为你挑选了3个好方法。

对于亚马逊服务(S3,EC2,SimpleDB的)所有操作您需要签署与HMAC-SHA-1签名(所有resquest http://en.wikipedia.org/wiki/HMAC,http://docs.amazonwebservices.com /AWSFWS/latest/DeveloperGuide/index.html?SummaryOfAuthentication.html).

我在asp.net后端工作,没有问题.问题出在iPhone应用程序中.iPhone开发人员说,没有办法使用HMAC-SHA-1编码,他也没有办法实现自己的算法.作为程序员,我无法理解为什么会出现问题.

所以我想知道iPhone开发者是对的吗?

我从来没有为iPhone编码,所以我甚至没有在哪里搜索这样的信息.



1> stigi..:

CommonCrypto可以解决问题.

#import 

然后

/*
  inputs:
  NSData *keyData;
  NSData *clearTextData
*/

uint8_t digest[CC_SHA1_DIGEST_LENGTH] = {0};

CCHmacContext hmacContext;
CCHmacInit(&hmacContext, kCCHmacAlgSHA1, keyData.bytes, keyData.length);
CCHmacUpdate(&hmacContext, clearTextData.bytes, clearTextData.length);
CCHmacFinal(&hmacContext, digest);

NSData *out = [NSData dataWithBytes:digest length:CC_SHA1_DIGEST_LENGTH];



2> schwa..:

CommonCrypto会做到这一点.但如果你想要代码,我在这里有一些:

http://oauth.googlecode.com/svn/code/obj-c/OAuthConsumer/Crypto/

我写的用于Cocoa OAuth实现的内容:http://code.google.com/p/oauthconsumer/wiki/UsingOAuthConsumer



3> raaz..:

该文章演示了一个小功能,将产生的SHA-1散列摘要,将匹配什么,如果你给它相同的输入PHP的SHA1()函数将生成:

#import 

@implementation SHA1

+(NSString*) digest:(NSString*)input
{
const char *cstr = [input cStringUsingEncoding:NSUTF8StringEncoding];
NSData *data = [NSData dataWithBytes:cstr length:input.length];

uint8_t digest[CC_SHA1_DIGEST_LENGTH];

CC_SHA1(data.bytes, data.length, digest);

NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];

for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x", digest[i]];

return output;

}
@end

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有