hmac-sha1算法
2016-04-29 10:25
621 查看
+ (NSString *)hmac_sha1:(NSString *)plaintext withKey:(NSString *)key { NSData *cKey = [self hexStringToNSData:key]; //key转换为二进制数据 const char *cData = [plaintext cStringUsingEncoding:NSUTF8StringEncoding]; uint8_t cHMAC[CC_SHA1_DIGEST_LENGTH]; CCHmac(kCCHmacAlgSHA1, [cKey bytes], cKey.length, cData, strlen(cData), cHMAC); //hmac NSString *hash; NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2]; for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) //转换到output [output appendFormat:@"%02x", cHMAC[i]]; hash = output; return hash; }
<pre name="code" class="objc">+ (NSData*)hexStringToNSData:(NSString*)hexStr { hexStr = [hexStr stringByReplacingOccurrencesOfString:@" " withString:@""]; NSMutableData *data= [[NSMutableData alloc] init]; unsigned char whole_byte; char byte_chars[3] = {'\0','\0','\0'}; for (int i = 0; i < ([hexStr length] / 2); i++) { byte_chars[0] = [hexStr characterAtIndex:i*2]; byte_chars[1] = [hexStr characterAtIndex:i*2+1]; whole_byte = strtol(byte_chars, NULL, 16); [data appendBytes:&whole_byte length:1]; } NSLog(@"%@", data); return data; }
相关文章推荐
- Ambiguous handler methods mapped for HTTP path
- PySide学习笔记第六章-菜单和工具栏
- 制作类似分享插件功能
- WINDOWS 64位机ODBC的数据源DSN添加和移除问题
- Shell编程基础
- Windows Server 2012 R2 WSUS
- Kendo UI常用示例汇总(七)
- ComponentName(String pkg, String cls)
- android frameworks学习
- SQLServer找出执行慢的SQL语句
- 计算机程序的思维逻辑 (9) - 条件执行的本质
- 使用JavaScript实现动态创建含合并单元格(行)的表单
- bootstrap响应式设计简单实践。
- java留言管理系统中模糊查询实例分享
- yii2框架安装
- Zookeeper开源客户端框架Curator简介
- 鼠标选不中脚注,但是又想修改脚注
- iOS 键盘样式UIKeyboardType
- IOS 文件目录
- typedefef函数指针的用法(转载)