首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目标C中等效的Java javax.crypto库?

目标C中等效的Java javax.crypto库?
EN

Stack Overflow用户
提问于 2011-06-22 15:25:55
回答 2查看 1.7K关注 0票数 0

我正在用Java做以下工作,我想在Objective(减去Base64位,我已经开始工作了)中做等价的操作:

代码语言:javascript
复制
Mac mac = Mac.getInstance("HmacSHA1");
SecretKeySpec secret = new SecretKeySpec(PRIVATE_KEY.getBytes(),"HmacSHA1");
mac.init(secret);
result =  Base64.encodeToString(mac.doFinal(data), Base64.DEFAULT);

有什么目标-C库可以帮助我做等价物吗?

* UPDATE *

只是一个更新--我已经运行了以下代码,但是out结果为null:

代码语言:javascript
复制
NSData *keyData = [PRIVATE_KEY dataUsingEncoding:NSUTF8StringEncoding];
NSData *clearTextData = [data dataUsingEncoding:NSUTF8StringEncoding];

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];

NSLog(@"encrypted data: %@", [NSString stringWithUTF8String:[out bytes]]);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-22 15:48:08

最近我做了另一个在iPhone上做HMAC-SHA1 1的项目。这就是你要的!

密匙是用名为Base64的NSString编码的,要签名的字符串在名为signString的NSString中。如果您已经拥有了NSData,只需使用它而不是clearTextData。

输出签名将在base64Enc中,或者如果您不希望对其进行编码,只需“out”。

代码语言:javascript
复制
NSData *keyData = [NSData dataWithBase64EncodedString:secretKey];
NSData *clearTextData = [signStr dataUsingEncoding:NSUTF8StringEncoding];

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];
NSString *base64Enc = [out base64Encoding];
票数 1
EN

Stack Overflow用户

发布于 2011-06-22 15:40:44

看一看手册3 3cc部分。它包括各种密码相关的算法,包括SHA1,HMAC和MD5.与大量的目标C代码相比,它们是相当低级的,但只要你知道指针,它们就很简单。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6442399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档