SHA HMAC 和SHA3(基於Keccak)加密算法測試代碼(C語言版)

安全散列算法(英語:Secure Hash Algorithm,縮寫爲SHA)是一個密碼散列函數家族,是FIPS所認證的安全散列算法。能計算出一個數字消息所對應到的,長度固定的字符串(又稱消息摘要)的算法。且若輸入的消息不同,它們對應到不同字符串的機率很高。SHA家族的五個算法,分別是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,由美國國家安全局(NSA)所設計,並由美國國家標準與技術研究院(NIST)發佈;是美國的政府標準。後四者有時並稱爲SHA-2。

https://en.wikipedia.org/wiki/Secure_Hash_Algorithms

SHA-HMAC跟其它SHA家族算法區別在於加了多加了一個私有密匙,使得在安全領域上更可靠


測試環境

系統:Ubuntu14

編譯環境:Linux GCC


以下是幾個測試例子,其它類似,後面附上源碼

測試一:SHA1-HMAC

第一步:在include/config.h文件下打開SHA1-HMAC相關宏定義

#ifndef __CONFIG_H_
#define __CONFIG_H_

//宏定義選擇算法開關,用到哪種算法,就打開該算法的宏定義,沒用到的註釋掉宏定義,否則出錯
/************************************HMAC相關加密算法宏定義*************************************/
#define SHA_1
//#define SHA_224
//#define SHA_256
//#define SHA_384

//#define SHA_512 //HMAC SHA512又有五種,根據需要選擇如下其中一種
#ifdef SHA_512
//五選一
//#define HMAC512
//#define HMAC512_128
//#define HMAC512_192
//#define HMAC512_224
//#define HMAC512_256
#endif
/***********************************************************************************/

/************************************************************************************
* Keccak interface. This is the interface for Keccak with the
* recommended parameters for SHA-3, with output lengths 224, 256,
* 384 and 512 bits.
************************************************************************************/
//宏定義選擇算法開關,用到哪種算法,就打開該算法的宏定義,沒用到的註釋掉宏定義,否則出錯

//#define SHA3_224
//#define SHA3_256
//#define SHA3_384
//#define SHA3_512

#ifdef SHA3_224
#define SHA3
#endif

#ifdef SHA3_256
#define SHA3
#endif

#ifdef SHA3_384
#define SHA3
#endif

#ifdef SHA3_512
#define SHA3
#endif


#define DEBUG			// 打開調試信息輸出的開關
// debug宏的定義
#ifdef DEBUG
#define debug(...)                                                      \
        {                                                               \
            fprintf(stderr, "[debug][%s:%s:%d] ",                     \
                    __FILE__, __FUNCTION__, __LINE__);                  \
            fprintf(stderr, __VA_ARGS__);                               \
        }
#else
#define debug(...)  
#endif

#endif

第二步:在input/message digest.txt ----->該文件用於存放消息摘要,也就是加密的明文


第三步:在input/key.txt  ----->該文件用於存放加密的密匙,只有HMAC相關加密算法纔會用到

第三行輸入密匙


第四步:實驗測試



SHA-HMAC測試網址https://www.freeformatter.com/hmac-generator.html

用其它網站在線測試,注意文本格式是否一致

測試二:SHA224-HMAC

第一步:在include/config.h文件下打開SHA1-HMAC相關宏定義

參考測試一更改

第二步:在input/message digest.txt ----->該文件用於存放消息摘要,也就是加密的明文

參考測試一更改

第三步:在input/key.txt  ----->該文件用於存放加密的密匙,只有HMAC相關加密算法纔會用到

第三行輸入密匙

第四步:實驗測試



測試三:SHA3-224

第一步:在include/config.h文件下打開SHA3-224相關宏定義

參考測試一更改

第二步:在input/message digest.txt ----->該文件用於存放消息摘要,也就是加密的明文

參考測試一更改

第三步:實驗測試



SHA3在線測試網址:http://www.atool.org/hash.php

測試四:------------

測試五:------------


注意:每次測試都需要重新編譯源程序

make 編譯鏈接程序

make clean 可清除編譯鏈接生成的文件

具體可查看makefile文件查看規則

下載源代碼:https://download.csdn.net/download/baidu_34919559/10469413

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章