近期做了一个项目有用到 hmac 算法 当然php 有现成的函数了 hash_hmac()
但是在IOS端怎么也获取不到对应的值
现在记录一下
hash_hmac(加密算法,秘钥,加密数据,HEX or BUFFER)
这里我们实现的是 HMac_SHA1 算法
2 |
$hash = hash_hmac ( ‘sha1‘ , $key , $data ,false); |
IOS 端 查阅的资料基本都是基于NSDATA 或者 Hmac_sha1 BASE64 的
而基本的 HEX 的方法 确没有查到
几经实验 现将 实现方法记录如下
01 |
+ (NSString *) hmacSha1:(NSString*)key text:(NSString*)text |
03 |
const char *cKey = [key cStringUsingEncoding:NSUTF8StringEncoding]; |
04 |
const char *cData = [text cStringUsingEncoding:NSUTF8StringEncoding]; |
06 |
uint8_t cHMAC[CC_SHA1_DIGEST_LENGTH]; |
08 |
CCHmac(kCCHmacAlgSHA1, cKey, strlen (cKey), cData, strlen (cData), cHMAC); |
12 |
NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2]; |
13 |
for ( int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) |
14 |
[output appendFormat:@ "%02x" , cHMAC[i]]; |