91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 7KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-13
  • 語言: C/C++
  • 標簽: HMAC??SHA256??C語言??

資源簡介

本文檔為HMAC-SHA256的C語言實現代碼,本人親測結果與標準加密結果一致,可供學習HMAC,SHA-256安全算法相關的人員參考

資源截圖

代碼片段和文件信息

/********************************************************************
??P-CODE:
????function?hmac?(key?message)?{
????????if?(length(key)?>?blocksize)?{
????????????key?=?hash(key)?//?keys?longer?than?blocksize?are?shortened
????????}
????????if?(length(key)?????????????//?keys?shorter?than?blocksize?are?zero-padded?(where?∥?is?concatenation)
????????????key?=?key?∥?[0x00?*?(blocksize?-?length(key))]?//?Where?*?is?repetition.
????????}

????????o_key_pad?=?[0x5c?*?blocksize]?⊕?key?//?Where?blocksize?is?that?of?the?underlying?hash?function
????????i_key_pad?=?[0x36?*?blocksize]?⊕?key?//?Where?⊕?is?exclusive?or?(XOR)

????????return?hash(o_key_pad?∥?hash(i_key_pad?∥?message))?//?Where?∥?is?concatenation
????}
********************************************************************/

#include?
#include?“hmac_sha256.h“
#include?“sha256.h“

/*?常量?*/
#define?B?64 ????????????????//?明文分塊長度?byte
#define?I_PAD?0x36 ????????????//?內部填充
#define?O_PAD?0x5C ????????????//?外部填充
#define?KEY_IOPAD_SIZE?64???????//?填充字串長度?byte
#define?SHA256_DIGEST_SIZE?32 //?SHA-256摘要輸出大小?32-byte

/*?帶符號整數類型?*/
typedef???signed??????????char?int8_t;
typedef???signed?short?????int?int16_t;
typedef???signed???????????int?int32_t;

/*?無符號整數類型?*/
typedef?unsigned??????????char?uint8_t;
typedef?unsigned?short?????int?uint16_t;
typedef?unsigned???????????int?uint32_t;


/********************************************************************
?*?將無符號?4-bit?二進制數據表示為十六進制形式.
?*?如?{1010}?將轉換為?{‘A‘}.
?*
?*?參數說明:
?*??hb:?????????32-byte?摘要信息
?*?返回值:
?*??以?ASCII碼?表示的十六進制數?[0-9A-F]
?********************************************************************/
char?bin2hex(unsigned?char?hb)
{
????hb?=?hb?&?0xF;
????return?(char)(hb?}

/********************************************************************
?*?將?256-bit?摘要信息?轉換為?64位?char數組?每位字符表示一個十六進制數.
?*?如?{0x5C?0x5C?...??0x5C}?將轉化為?{‘5‘?‘C‘?‘5‘?‘C‘?...??‘5‘?‘C‘}.
?*
?*?參數說明:
?*??digest:?????32-byte?摘要信息
?*??digest_hex:?出參?轉換后的?64位?字符?每位表示一個十六進制數?以?ASCII碼?形式存儲
?********************************************************************/
void?digest2hex(unsigned?char?digest[HMAC_SHA256_DIGEST_SIZE]?
????char?digest_hex[HMAC_SHA256_DIGEST_SIZE*2])
{
????for?(int?i?=?0;?i?????????digest_hex[i?*?2]?=?bin2hex(digest[i]?>>?4);
????????digest_hex[i?*?2?+?1]?=?bin2hex(digest[i]);
????}
}

/********************************************************************
?*?HMAC-SHA256?摘要生成算法:
?*??HMAC-SHA256(K?M)?==?SHA256((K?^?opad)?∥?SHA256((K?^?ipad)?∥?M))
?* ????K:??????密鑰
?*??????M:??????消息
?* ????ipad:???內部填充字符串
?* ????opad:???外部填充字符串
?*??????∥:??????數據連接操作
?*
?* 函數參數:
?*??????digest:?出參?輸出?32-byte?加密結果
?* ????msg:????要加密的數據
?*??????msgLen:?數據長度
?*??????key:????加密因子
?*??????keyLen:?加密因子長度
?********************************************************************/
void?hmac_sha256(unsigned?ch

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????2283??2020-03-10?22:43??sha256.h

?????文件???????2503??2020-03-12?08:28??Test.cpp

?????文件???????5191??2020-03-12?05:43??hmac_sha256.c

?????文件???????1395??2020-03-12?05:44??hmac_sha256.h

?????文件???????9604??2020-03-12?03:30??sha256.c

-----------?---------??----------?-----??----

????????????????20976????????????????????5


評論

共有 條評論