iOS HmacSHA1加密

需要導(dǎo)入cocoaSecurity框架

https://github.com/kelp404/CocoaSecurity

Base64:https://github.com/nicklockwood/Base64

導(dǎo)入頭文件
#include <CommonCrypto/CommonDigest.h>
#include <CommonCrypto/CommonHMAC.h>

具體代碼:

001 有加密key Hmac加密處理

/**
 *  對NSString進行處理
 *
 *  @param key  要加密key
*  @param data 加密的data
*
*  @return 加密后的字符串
*/
+(NSString *)HmacSha1:(NSString *)key data:(NSString *)data{
const char *cKey  = [key cStringUsingEncoding:NSUTF8StringEncoding];

const char *cData = [data cStringUsingEncoding:NSUTF8StringEncoding];


uint8_t cHMAC[CC_SHA1_DIGEST_LENGTH];

CCHmac(kCCHmacAlgSHA1, cKey, strlen(cKey), cData, strlen(cData), cHMAC);


//NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC length:CC_SHA1_DIGEST_LENGTH];

NSString *hash;

NSMutableString * output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];


for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++)
    
    
[output appendFormat:@"%02x", cHMAC[i]];


hash = output;

return hash;

}

注意事項:需要確認是否需要進行64位處理

002

//HmacSHA1加密;
+(NSString *)HmacSha1:(NSString *)key data:(NSString *)data
{
const char *cKey  = [key cStringUsingEncoding:NSASCIIStringEncoding];
const char *cData = [data cStringUsingEncoding:NSASCIIStringEncoding];
//Sha256:
// unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
//CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);

//sha1
unsigned char cHMAC[CC_SHA1_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA1, cKey, strlen(cKey), cData, strlen(cData), cHMAC);

NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC
                                      length:sizeof(cHMAC)];

NSString *hash = [HMAC base64EncodedStringWithOptions:0];//將加密結(jié)果進行一次BASE64編碼。
return hash;
}

003

//密碼加密方式:SHA1
+(NSString *)EncriptPassword_SHA1:(NSString *)password{
 const char *cstr = [password cStringUsingEncoding:NSUTF8StringEncoding];
NSData *data = [NSData dataWithBytes:cstr length:password.length];
uint8_t digest[CC_SHA1_DIGEST_LENGTH];
CC_SHA1(data.bytes, data.length, digest);

NSMutableString* result = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH *2];

for(int i =0; i < CC_SHA1_DIGEST_LENGTH; i++) {
    [result appendFormat:@"%02x", digest[i]];
}

return [result uppercaseString];
  }

【參考文章】:https://blog.csdn.net/u013056367/article/details/42677033

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容