HmacSHA1 算法

“HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code),HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。”

可以看出,HMAC是需要一个密钥的。所以,HMAC_SHA1也是需要一个密钥的,而SHA1不需要。

#import "AlgorithmManager.h"
#import <CommonCrypto/CommonCrypto.h>

@implementation AlgorithmManager


+ (NSString *)signWithHmacSHA1:(NSString *)input withKey:(NSString *)key{
    
    
    const char *cKey  = [key cStringUsingEncoding:NSASCIIStringEncoding];
    const char *cData = [input cStringUsingEncoding:NSASCIIStringEncoding];
    
    unsigned char cHMAC[CC_SHA1_DIGEST_LENGTH];
    
    CCHmac(kCCHmacAlgSHA1, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
    
    NSData *HMACData = [[NSData alloc] initWithBytes:cHMAC length:sizeof(cHMAC)];
    
    const unsigned char *buffer = (const unsigned char *)[HMACData bytes];
    NSString *HMAC = [NSMutableString stringWithCapacity:HMACData.length * 2];
    
    for (int i = 0; i < HMACData.length; ++i)
        HMAC = [HMAC stringByAppendingFormat:@"%02lx", (unsigned long)buffer[i]];
    
    return HMAC;
    
}

@end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这篇文章主要讲述在Mobile BI(移动商务智能)开发过程中,在网络通信、数据存储、登录验证这几个方面涉及的加密...
    雨_树阅读 7,898评论 0 6
  • 1.起源军事领域 运用最广对数据加密进行保护凯瑟大帝 --凯瑟密码本一直持续用到上世纪70年代 二战美日对战 ...
    笑面狼阅读 5,689评论 0 51
  • 1 基础 1.1 对称算法 描述:对称加密是指加密过程和解密过程使用相同的密码。主要分:分组加密、序列加密。 原理...
    御浅永夜阅读 7,303评论 1 4
  • [导读] HMAC加密算法是一种安全的基于加密hash函数和共享密钥的消息认证协议.它可以有效地防止数据在传输过程...
    深度码农患者阅读 12,757评论 1 4
  • 我有一个好妈妈。她既不漂亮,也不博学,但是她在我心里是世界上最好的妈妈。 几乎每次看到灶台边上忙碌的妈妈我都有一种...
    无情轩阅读 1,183评论 1 0