HmacSHA256 算法

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

@implementation AlgorithmManager


+ (NSString *)signWithHmacSHA256:(NSString *)input withKey:(NSString *)key{


    const char *cKey  = [key cStringUsingEncoding:NSASCIIStringEncoding];
    const char *cData = [input cStringUsingEncoding:NSASCIIStringEncoding];
    
    unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
    
    CCHmac(kCCHmacAlgSHA256, 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

HmacSHA256 實現原理與HmacSHA1原理一樣,只需要設置兩個參數即可。

1. CC_SHA1_DIGEST_LENGTH -> CC_SHA256_DIGEST_LENGTH
2. kCCHmacAlgSHA1 ->kCCHmacAlgSHA256

同理 ,其它類型也可以設置。類型如下:

enum {
    kCCHmacAlgSHA1,
    kCCHmacAlgMD5,
    kCCHmacAlgSHA256,
    kCCHmacAlgSHA384,
    kCCHmacAlgSHA512,
    kCCHmacAlgSHA224
};
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,993評論 19 139
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,779評論 18 399
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,581評論 25 708
  • 今天二美推薦的題目是聊一聊自己最喜歡的電影。 最喜歡的電影。這個題目魔兄想了很久。 魔兄看過的電影非常多,特別喜歡...
    賈蕭遙閱讀 742評論 5 8
  • 也有過思緒泉涌的日子,每日都會寫些散記,不覺厭煩,不覺枯燥。而若干年后看過去,當時那個心系天下,義憤填膺,愛打抱不...
    嬉皮的胖紙喲閱讀 187評論 0 0