栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

需要像Java中那样在Objective C中生成HMAC SHA256哈希

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

需要像Java中那样在Objective C中生成HMAC SHA256哈希

您需要修复Java
hmac打印机,因为

4effffffd8ffffffce7cffffffc4ffffffc71b2f72ffffffdc21ffffffa1ffffffe0ffffffe62d32550b0771296bffffff9c1159ffffffdeffffff8675ffffff9928654c
它无效。里面的所有内容
ffffff
都有一个赠品,您要先将字节符号扩展为32位带符号整数,然后再将它们转换为十六进制。大概正确的hmac是
4ed8ce7cc4c71b2f72dc21a1e0e62d32550b0771296b9c1159de86759928654c

无论如何,我怀疑您在错误地调用您的方法。我将您的代码复制到一个测试程序中,该程序为您提供了密钥和数据的输出:

2011-12-10 13:03:38.231 hmactest[8251:707] test hmac = <4ed8ce7c c4c71b2f 72dc21a1 e0e62d32 550b0771 296b9c11 59de8675 9928654c>

匹配您所需的输出(符号扩展错误除外)。

这是我的测试程序:

#import <Foundation/Foundation.h>#import <CommonCrypto/CommonHMAC.h>NSData *hmacForKeyAndData(NSString *key, NSString *data){    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);    return [[NSData alloc] initWithBytes:cHMAC length:sizeof(cHMAC)];}int main (int argc, const char * argv[]){    @autoreleasepool {        // Compare to http://en.wikipedia.org/wiki/HMAC#Examples_of_HMAC_.28MD5.2C_SHA1.2C_SHA256_.29        NSLog(@"empty hmac = %@", hmacForKeyAndData(@"", @""));        NSLog(@"test hmac = %@", hmacForKeyAndData(@"YARJSuwP5Oo6/r47LczzWjUx/T8ioAJpUK2YfdI/ZshlTUP8q4ujEVjC0seEUAAtS6YEE1Veghz+IDbNQb+2KQ==", @"id=456|time=19:10|nonce=8"));    }    return 0;}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/452736.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号